SqlSessionFactoryBuilder
这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。
SqlSessionFactory
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。
SqlSession
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
映射器实例(BlogMapper mapper)
映射器是一些由你创建的、绑定你映射的语句的接口。映射器接口的实例是从 SqlSession 中获得的。
因此从技术层面讲,任何映射器实例的最大作用域是和请求它们的 SqlSession 相同的。
try (SqlSession session = sqlSessionFactory.openSession()) {
BlogMapper mapper = session.getMapper(BlogMapper.class);
// 你的应用逻辑代码
}
1. 当调用dao层的这条具体语句时 userDao.selectUserListCount(query); 它会生成一个Mapper的动态代理类 MapperProxy ,
然后在MapperProxy 代理类中执行查询操作。如下截图:
// Java的动态代理就必须得实现InvocationHandler接口
1. myBatis获取数据
2. MapperMethod 查询数据