1. 前言
源码地址:https://github.com/mybatis/mybatis-3
mybatis3.x 官方文档:http://www.mybatis.org/mybatis-3/zh/configuration.html
源码版本:3.5.1
在阅读源码的时候,一般都是通过测试案例来分析执行流程,进而掌握整体的框架。在阅读的时候,结合官方的文档,能更好的理解其中的设计思路。
2.正文
将源码导入ide
2.1.添加mysql、junit依赖
<!--Mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>runtime</scope>
</dependency>
2.2 resource下新建mybatis-config.xml 文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<package name="com.mybatis.chen.model"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis" />
<property name="username" value="root" />
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mybatis/chen/mapper/PersonMapper.xml"/>
</mappers>
</configuration>
2.3 新建com.mybatis.chen.dao.PersonDao
public interface PersonDao {
int insert(Person p);
}
2.4新建com.mybatis.chen.mapper.PersonMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.chen.dao.PersonDao">
<insert id="insert" parameterType="Person" keyProperty="id" useGeneratedKeys="true">
INSERT INTO person (name, age, phone, email, address)
VALUES(#{name},#{age},#{phone},#{email},#{address})
</insert>
</mapper>
2.5 新建com.mybatis.chen.model.Person
public class Person {
private int id;
private String name;
private int age;
private String phone;
private String email;
private String address;
//set get toString
}
2.6 新建com.mybatis.chen.util.SqlSessionFactoryUtil
public class SqlSessionFactoryUtil {
public static SqlSessionFactory getSqlSessionFactory(){
String path = "mybatis-config.xml";
SqlSessionFactory sqlSessionFactory = null;
try {
Reader reader = Resources.getResourceAsReader(path);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
System.out.println("获取配置文件失败");
e.printStackTrace();
}
return sqlSessionFactory;
}
}
2.7 编写测试案例
public class TestFactory {
@Test
public void test(){
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
PersonDao personDao = sqlSession.getMapper(PersonDao.class);
Person p = new Person();
p.setAddress("广东省");
p.setAge(12);
p.setEmail("157538651@qq.com");
p.setName("chen");
p.setPhone("15345634565");
personDao.insert(p);
System.out.println(p.toString());
sqlSession.commit();
sqlSession.close();
}
}
2.8 运行测试案例
ide控制台:
Person{id=14, name='chen', age=12, phone='15345634565', email='157538651@qq.com', address='广东省'}
数据库:
2.9 目录结构:
下一篇介绍xml的解析流程。