您的位置:首页 > 数据库

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源码分析

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐