回顾 在前面,我们通过 redis 集成了 MyBatis 的二级缓存,440.MyBatis的二级缓存整合redis ,接下来,我们来分析一下 RedisCache 的源码。 源码分析 RedisCache 主要是通过实现 Cache 接口来做的。数据存储和获取主要是通过操作 jedis 来...
MyBatis的二级缓存
二级缓存的原理 二级缓存的原理和一级缓存一样,第一次查询会将数据放到缓存中,然后第二次查询直接去缓存读取。 但是一级缓存是基于 SqlSession 的,二级缓存是基于 mapper 的 namespace 的。 也就是说,多个 SqlSession 可以共享同一个二级缓存区域。如果两个 mappe...
MyBatis的一级缓存
在 MyBatis 中,一级缓存是默认开启的。 通过场景来理解: 场景一 1、在一个 SqlSession 中,对 User 表进行两次根据 ID 的查询,查看发出 sql 语句的情况。 /** * 根据ID查询用户 * * @param id * @return */ @Select("selec...
MyBatis缓存的概念
缓存回顾 缓存就是内存中的数据,常常来自对数据库查询结果的保存。 使用缓存可以避免频繁与数据库交互,进而提高响应速度。 MyBatis 对缓存的支持 MyBatis 也提供了对缓存的支持,分为 一级缓存 和 二级缓存。可以用下面的图来理解: 一级缓存是 SqlSession 级别的缓存。在操作数...
MyBatis常用注解及基本增删改查的注解实现
MyBatis 的常用注解 注解可以减少 Mapper 文件的编写,常用注解如下; @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以和@Result 一起使用,封装多个结果集 @One:实现...
MyBatis的注解实现复杂映射开发
xml 配置方式实现复杂映射回顾 实现复杂映射我们之前可以在映射文件中通过配置来实现,使用注解开发后,我们可以通过 @Results 注解,@Result 注解,@One 注解和 @Many 注解组合完成复杂关系的配置。 注解 说明 @Results 代替的是标签 ,该注解中可以使用单个的 @R...
MyBatis复杂映射开发之多对多查询
多对多查询的模型 用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用。 多对多查询的需求:查询所有用户的同时查询出该用户对应的所有角色。 @startuml !theme plain top to bottom direction skinparam linetype ortho c...
MyBatis复杂映射开发之一对多查询
一对多查询模型 用户和订单表的关系为,一个用户有多个订单,一个订单只能属于一个用户。 一对多查询需求:查询多有用户,与此同时查询用户具有的订单信息。 一对多查询语句 对应的sql语句 select u.*,o.ordertime,o.total,o.uid from user u left join...
MyBatis复杂映射开发之一对一查询
一对一查询需求 用户表和订单表的关系为:一个用户可以有多个订单,一个订单只能从属于一个用户 一对一查询需求:查询一个订单,同时查询出该订单所对应的用户 对应的sql语句:select * from orders o,user u where o.uid=u.id 查询结果如下: id orderti...
Mybatis基本流程及配置文件解析
Mybatis基本流程 1、利用Resources工具类加载配置文件,并转换成输入输出流 2、利用解析的配置,创建SqlSessionFactory工厂 3、生产SqlSession 4、SqlSession调用方法 Mybatis配置文件分析 sqlMapConfig.xml MyBatis核心配...