Mybatis执行流程解析
前两部分我们可以通过分析MybatisUtils类得出, 第三部分需要分析源码和debug
// SqlSessionFactory--> SqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//获取SqlSessionFactory对象分为两步
//第一步加载全局配置文件
String resource="mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//第二步:实例化SqlSessionFactoryBuildeer构造器--->由build里面的XMLConfigBuilder解析配置文件流
//---->把配置信息放在Configuration中--->实例化SqlSessionFactory实现类DesaultSqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
测试文件:
public class UserMapperTest {
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUserList();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
}
从这里我们可以看出,我们只需要和我们要实现的接口建立联系, MybatisUtils就可以完成了上述的三个部分