MyBatis框架的初始化操作
处理SQL请求的流程
@Test
public void test1()throwsException{
// 1.获取配置文件
InputStream in = Resources.getResourceAsStream("/test.xml")
// 2.加载解析配置文件并获取SqlSessionFactory对象
// SqlSessionFactory 的实例我们没有通过 DefaultSqlSessionFactory直接来获取
//而是通过一个Builder对象来建造的
// SqlSessionFactory 生产 SqlSession 对象的 SqlSessionFactory 应该是单例
//全局配置文件和映射文件也只需要在系统启动的时候完成加载操作
//通过建造者模式来构建复杂的对象 1.完成配置文件的加载解析 2.完成SqlSessionFactory的创建
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3.根据SqlSessionFactory对象获取SqlSession对象
SqlSession sqlSession = factory.openSession();
//4.通过sqlSession中提供的API方法来操作数据库
List<User> list = sqlSession.selectList(\
// 获取接口的代码对象 得到的其实是 通过JDBC代理模式获取的一个代理对象
// UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//List<User> list = mapper.selectUserList();
System.out.println(\
// 5.关闭会话
sqlSession.close(); // 关闭session 清空一级缓存
}
MyBatis是一个持久层框架,它的工作原理是:
首先,MyBatis从XML映射文件中读取SQL语句,将其解析成SQL语句对象,并将SQL语句对象存储在内存中。
然后,MyBatis将SQL语句对象与用户提供的参数绑定,生成完整的SQL语句。
接着,MyBatis将SQL语句发送给数据库,并将查询结果映射到Java对象。
最后,MyBatis将Java对象返回给用户。
SglSessionFactory: new DefaultSglSessionFactory全局配置文件的加载解析【Configuration】,映射文l
件的加载解析【Configuration, MappedStatement】
SqlSession: new DefaultSqlSession,创建相关的事务工厂,完成Executor的创建,已经二级缓存
CachingExecutor的装饰,同时完成了插件逻辑的植入。
selectOne();二级缓存->一级缓存 --> 数据库插入