MyBatis源码分析第一天---手动实现mybatis解析数据库
2019-06-30 15:05
99 查看
**
- 在数据持久层的框架中,mybatis完美的消除了几乎所有的jdbc代码和参数的手工设置,以及对结果的检索封装。通过简单的xml配置或者注解即可配置和原始映射。自动化解析数据,到装配对象,再到使用,一体式流程。
**
第一步:首先导入maven依赖
<dependencies> <!-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <!-- mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.29</version> </dependency> </dependencies>
第二步:配置 configuration数据库连接mybatis-config.xml
<configuration> <!-- 环境配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <!-- 数据库连接相关配置 ,这里动态获取config.properties文件中的内容--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://192.168.5.140:3308/kevin"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- mapping文件路径配置 --> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration>
第三步:mapper配置文件,此处的namespace必须与持久层mapper路径一致
<mapper namespace="com.zkq.mapper.UserMapper"> <!-- 根据id查询得到一个user对象 --> <select id="getUser" parameterType="int" resultType="com.zkq.entity.UserEntity"> select * from user where id=#{id} </select>
第四步:数据库表结构
CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
第五步:持久层接口
public interface UserMapper { UserEntity getUser(int id); }
第六步:持久层pojo类
public class UserEntity { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "UserEntity{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
第七步:执行代码
public static void main(String[] args) throws IOException { // 1.首先定义mybatis.xml的配置文件 String source = "mybatis-config.xml"; // 2.获取InputStreamReader对象,读取配置文件 Reader reader = Resources.getResourceAsReader(source); // 3.创建SqlSessionFactoryBuilder,使用它封装的XMLConfigBuilder解析读取到的配置文件,并将解析完成的数据封装成configuration SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader); // 4.创建对应的session SqlSession sqlSession = build.openSession(); // 5.获取对应的mapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 6.执行方法 UserEntity user = mapper.getUser(2); System.out.println(user.toString()); }
第八步:执行结果
UserEntity{id=1, name='kevin', age=28}
第一天为大家实现手动解析数据库,更深层次的源码分析请耐心等待第二天的MyBatis源码分析。
相关文章推荐
- Mybatis实现【4】-查询解析(一次SQL查询的源码分析)
- Mybatis3源码分析(17)-Sql解析执行-缓存的实现
- mybatis源码分析4 - sqlSession读写数据库完全解析
- mybatis源码分析5 - mapper读写数据库完全解析
- OpenStack建立实例完整过程源码详细分析(14)----依据AMQP通信架构实现消息接收机制解析之一
- Mybatis3源码分析(11)-Sql解析执行-BoundSql的加载-1
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(四)之插入SQL
- Mybatis工作机制源码分析—初始化—mapper配置文件解析
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析
- Mybatis原理解析(一)--java.sql数据库操作的基本实现方式
- Mybatis3源码分析(三):解析mapper的xml配置文件
- 修改MyBatis源码实现扫描注册枚举-分析源码
- MyBatis-3.4.2-源码分析5:解析XML之objectFactoryElement(root.evalNode("objectFactory"))
- MyBatis-3.4.2-源码分析18:XML解析之RoleMapper userMapper = sqlSession.getMapper(RoleMapper.class)
- 【MyBatis源码分析】插件实现原理
- 【MyBatis源码分析】properties,typeAliases解析属性配置元素详述
- 【MyBatis源码分析】TypeHandler解析属性配置元素详述及相关枚举使用高级进阶
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(一)之语法解析
- Mybatis3源码分析(14)-Sql解析执行-StatementHandler
- Mybatis3源码分析(21)-Mapper实现-动态代理