介绍下MyBatis中的工作原理

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();二级缓存->一级缓存 --> 数据库插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值