mybatis mapper 代理,缓存

  • mapper 代理流程:
    • 1、创建对应的Mapper接口,和xml文件名一致(同包同名)
    • 2、编写对应的xxmapper.xml配置文件。有要求
      • mapper标签里面的namespace:必须写成对应的Mapper接口的路径名
      • sql语句里面的id:必须和接口中对应方法的名称一致。
      • sql语句里面的parameterType:必须要和接口中方法的形式参数数据类型一致
      • sql语句里面的resultType:必须和接口中方法的返回值数据类型一致
    • 3、将编写好的**mapper.xml文件在SqlMapConfig.xml文件中加载
    • 4、编写实现类
      • xxMapper mapper = session.getMapper(xxMapper.class);
  • 缓存:
    • 一级缓存:
      • 1、自动的缓存 (无法关闭);sqlSession级别的缓存,相互独立;map结构存储,
      • 2、查询流程:查询语句前,先到一级缓存找相同查询语句,如果有直接拿结果, 否则重新执行语句,结果存在一级缓存;对数据库进行更改时,会清空一级缓存,解决脏读。session.close(); 一级缓存清空
      • 3、缓存机制:第一次发出一个查询 sql,sql 查询结果写入 sqlsession 的一级缓存中,缓存使用的数据结构是一 个 map。同一个 sqlsession 再次发出相同的 sql,就从缓存中取出数据。如果两次中间出现 commit 操作(修改、添加、删除),本 sqlsession 中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。
    • 二级缓存:(查询大量数据且不轻易更改时使用)
      • 1、需要手动开启;mapper映射级别的缓存;序列化存储,二进制形式存在文件里
      • 2、开启步骤:
        • 1、启动缓存,Mybatis框架支持二级缓存(在sqlMapConfig.xml中配置,全局配置)<setting name="cacheEnabled" value="true"/>
        • 2、指定的xml文件开启cache(在xxMapper.xml中配置)<cache/>
        • 3、指定的sql语句支持二级缓存(在select标签中配置)useCache="true"
      • 3、缓存机制:查询语句前,先到一级缓存找相同查询语句,再到二级存储查找,如果有直接拿结果,否则重新执行语句,结果存在一级、二级缓存;对数据库进行更改时,会清空一级缓存,解决脏读。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值