Mybatis

延迟/立即加载

延迟加载

  • 在真正使用数据时才发起查询,不用的时候不查询;按需求加载(懒加载LAZY)
    在这里插入图片描述
    在这里插入图片描述

立即加载

  • 不管用不用,只要一调用,马上发起查询(EAGER);
    对应四种表关系:
  • 一对多或者多对多:采用延迟加载
  • 一对一或者多对一:采用立即加载

Mybatis中的缓存机制

  • 缓存:存在于内存中的临时数据
    • 作用:减少与数据库的交互,提高执行效率
    • 适用于缓存:经常查询且不经常改变的;数据的正确与否对最终结果影响不大的数据。
    • 不适用于缓存:经常变化的数据;确保数据正确性的(商品库存、银行汇率、股市牌价等)数据。
  • 一级缓存:
    • 它指的是Mybatis中SQLSession对象的缓存。当我们执行查询之后,查询的结果会同时存入到SQLSession为我们提供的一块区域中;该区域结构是一个Map,当我们再次查询同样的数据时,Mybatis会先去SQLSession中查询是否有该数据,有的话直接拿出来用,没有则查询数据库并存储到SQLSession中。
    • 一级缓存存储的是对象,多次查询它指向的是同一个对象并且当Sqlsession消失时,缓存也消失
      在这里插入图片描述
      在这里插入图片描述
      两次查询的对象地址是一样的
      在这里插入图片描述
      只执行了一次sql语句,第二次是从SQLSession缓存中取出来的
      在这里插入图片描述
      当sqlsession对象消失后:进行两次查询;并且两次查询两个对象
  • 二级缓存:
    • Mybatis中SqlsessionFactory对象的缓存。由同一个SQLSessionFactory对象创建的SQLSession共享其缓存。
      在这里插入图片描述
      二级缓存中存放的内容是数据而不是对象;谁来查询他就将创建一个新的对象将该数据填充进去,这样就不再是同一个对象了
    • 使用步骤:
      • 第一步:让Mybatis框架支持二级缓存(在SQLMapConfig.xml中配置)
        在这里插入图片描述
      • 第二步:让当前的映射文件支持二级缓存(在IUserdao.xml中配置)
      • 第三步:让当前的操作支持二级缓存(在select标签中配置)
        在这里插入图片描述

Mybatis的注解开发

注意:使用注解开发就不能有采用配置方式的XML配置文件,不然会报错(因为Mybatis不知道以哪个为准)

  • 环境搭建
    pom文件在这里插入图片描述
    SQLMapConfig.xml
常用注解
  • @Select
    在这里插入图片描述

  • @Insert
    在这里插入图片描述

  • @Update
    在这里插入图片描述

  • @Delete
    在这里插入图片描述

  • @Results/@Result:建立实体类属性和数据库表中字段的对应关系
    查询结果数据封装入对象
    在这里插入图片描述

    • id=“userMap”:此结果对象集合的唯一标识
    • id=true:结果集合中的对象的唯一标识
  • MyBatis基于注解的二级缓存使用
    在这里插入图片描述
    在Dao/Mapper接口上添加@CacheNamespace(blocking = true)注解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值