1.SqlSessionFactoryBuilder
SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory。通过它可以构建过个SqlSessionFactory。它的作用就是一个构建器,一旦我们构建了SqlSessionFactory,它的作用也就消失了。
SqlSessionFactoryBuilder提供了多个重载的build()方法。
我们把第一个mybatis案例改写,项目结构图如下:

1).在resources下创建db.properties
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
mysql.username=root
mysql.password=root
2).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>
<!--配置属性-->
<properties resource="db.properties"/>
<!-- 配置映射类的别名 -->
<typeAliases>
<typeAlias alias="Users" type="com.entity.Users"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mapper/usersMapper.xml"/>
</mappers>
</configuration>
3).编写UsersMapperTest单元测试,测试SqlSessionFactoryBuilder.builder()的三种用法。
public class UsersMapperTest {
//传入字符流
@Test
public void testSqlSessionFactoryBuilder1(){
String resource = "mybatis-config.xml";
Reader is = null;
Configuration config=null;
try {
is = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
String statement = "com.mapper.usersMapper.getUser";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Users user = session.selectOne(statement, 3);
System.out.println(user);
}catch(Exception ex){
ex.printStackTrace();
}
}
//传入字节流
@Test
public void testSqlSessionFactoryBuilder2(){
String resource = "mybatis-config.xml";
InputStream is = null;
try {
is = Resources.getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
String statement = "com.mapper.usersMapper.getUser";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Users user = session.selectOne(statement, 3);
System.out.println(user);
}catch(Exception ex){
ex.printStackTrace();
}
}
//传入configuration
@Test
public void testSqlSessionFactoryBuilder3(){
String resource = "mybatis-config.xml";
Configuration config = null;
try {
XMLConfigBuilder configBuilder = new XMLConfigBuilder(Resources.getResourceAsStream(resource));
config = configBuilder.parse();
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);
SqlSession session = sessionFactory.openSession();
String statement = "com.mapper.usersMapper.getUser";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Users user = session.selectOne(statement, 3);
System.out.println(user);
}catch(Exception ex){
ex.printStackTrace();
}
}
}