当前位置: 首页 > news >正文

MyBatis的部分知识点

一、resultMap的constructor配置方式
     <resultMap id="" type="">
        <constructor>
            <!--主键-->
            <idArg column="id" javaType="_int"/>
            <!--其他列-->
            <arg column="" javaType=""/>
        </constructor>
    </resultMap>

二、MyBatis使用注解配置SQL
@Select
@Insert/@Options
@Update
@Delete
如果需要使用复杂的动态SQL,建议使用XML方式;
如果是简单的SQL,可以考虑使用注解


三、MyBatis缓存
对于一些我们经常查询的并且不经常改变的数据,如果每次查询都要与数据库进行交互,那么大大降低了效率,因为我们使用缓存,将一些对结果影响不大且经常查询的数据存放在内存中,从而减少与数据库的交互来提高效率,这就是缓存的优势。


(一)、MyBatis缓存的分类
1. 一级缓存:同一个SqlSession对象, 在参数和 SQL 完全一样的情况下, 只执行一次 SQL 语句(前提缓存没有过期)
2. 二级缓存:Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,同一个SQLSessionFactory创建的多个SqlSession共享。


(二)、一级缓存
1、同一个SqlSession的情况  
    在参数和 SQL 完全一样的情况下,只执行一次 SQL 语句
2、不同的SqlSession的情况
    不使用缓存
    
3、清空缓存
    刷新缓存是清空这个SqlSession的所有缓存, 不单单是某个键
    Java代码方式:sqlSession.clearCache();
    xml方式 flushCache="true"
4、小结:
    ①. 同一个SqlSession中, Mybatis 会把执行的方法和参数通过算法生成缓存的键值, 将键值和结果存放在一个 Map 中, 如果后续的键值一样, 则直接从 Map 中获取数据;
    ②. 不同的SqlSession之间的一级缓存是相互隔离的;
    ③. 用一个 SqlSession, 可以通过代码或XML配置在查询前清空缓存;
    ④. insert、update、delete 语句会清空缓存。
    
    
(三)、二级缓存
二级缓存指的是 mybatis中SqlSessionFactory对象的缓存 ,由同一个SqlSessionFactory对象 创建的SqlSession共享缓存。

1、开启
    ①、在配置文件 mybatis-conf.xml中配置,让mybatis支持二级缓存。 新版本中已经默认为true,可以不用设置。
        <!--设置-->
        <settings>
            <!--开启二级缓存-->
            <setting name="cacheEnabled" value="true"/>
        </settings>

    ②、在映射配置文件Mapper.xml中 开启支持二级缓存
        <!--开启支持二级缓存-->
        <cache/>

    ③、操作支持二级缓存,在select标签 加上useCache="true"
    
    
MyBatis结果来源顺序: 一级缓存 -> 二级缓存(如果开启) —> 数据库

http://www.lryc.cn/news/89438.html

相关文章:

  • PAT A1089 Insert or Merge
  • 研发工程师玩转Kubernetes——创建一个测试容器
  • FPGA - 7系列 FPGA内部结构之CLB -03- CLB相关原语以及应用
  • 什么是日志关联
  • 打家劫舍问题 Python题解
  • 【JavaSE】Java基础语法(十八):接口
  • SVD求解两组多维点之间的欧式变换矩阵,及halcon代码实现
  • 常用监控方案 Prometheus + Grafana 简单使用小结
  • 基于长短期神经网络LSTM的飞行轨迹跟踪预测,基于长短期神经网络LSTM的三维路径预测
  • 计算机组成原理-指令系统-指令格式及寻址方式
  • 【满分】【华为OD机试真题2023B卷 JAVAJS】经典屏保
  • Apache 网页与安全优化
  • Unity的IFilterBuildAssemblies:深入解析与实用案例
  • 分片架构,Redis Cluster 分析
  • Linux-0.11 文件系统bitmap.c详解
  • 【Linux】基本指令,拥抱Linux的第一步
  • CTF 2015: Search Engine-fastbin_dup_into_stack
  • DRF之全局异常处理
  • AI创作工具的使用体验报告
  • C++算法模板(转自acwing)
  • 阿里云服务器最新优惠价格及最新收费标准(2023更新)
  • React实现监听粘贴事件并获取粘贴板中的截图
  • ISO_IEC_7816-3
  • 学习C#反射(Reflection)
  • Spring Boot的核心组件和工作原理
  • 【指针的深刻理解】
  • lintcode-图的拓扑排序(java)
  • 【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)
  • Rinne Loves Graph
  • 第15章:索引的数据结构