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

Mybatis-核心源码相关

#与$的区别

一个是占位符方式,一个是字符串拼接方式;其中占位符方式可以防止sql注入;字符串拼接方式,无法防止sql注入
在这里插入图片描述

一级缓存和二级缓存的区别

从以下四个点分析
1、源码的实现流程:一级缓存是通过BaseExecutor去query;二级缓存是通过CachingExecutor去query
2、查询Cache的区别:
一级缓存只会通过PerpetualCache 去查询,如下
在这里插入图片描述
二级缓存的通过 TransactionalCacheManager 去管理Cache如下

  • SynchronizedCache:加锁,确保线程安全
  • SerializedCache:对数据做序列化和反序列化的操作
  • LoggingCache:记录缓存命中率的日志。
  • LruCache:基于Lru删除最近最少使用的缓存对象,Lru策略就是基于LinkedHashMap实现的,最大长度默认为1024。
    在这里插入图片描述

在这里插入图片描述
3、作用域:一级缓存的作用域是SqlSession级别;二级缓存的作用域是SqlSessionFactory级别
4、优先级别&默认开关:二级缓存的优先级高于一级缓存;一级默认开启;二级默认关闭

MyBatis中的Executor

主要是如下:

  • BaseExecutor: 基本的执行器,除了CachingExecutor之外,都是继承BaseExecutor实现的。
  • CachingExecutor: 他就是二级缓存的执行器。
  • SimpleExecutor: 一般默认使用的就是SimpleExecutor,每次执行SQL语句,都会创建一个Statement对象去和数据库完成交互。
  • ReuseExecutor: 可复用的执行器,复用的是Statement对象,他会根据SQL语句来决定是否复用一些Statement,他是将SQL作为Key,Statement作为Value扔到了一个HashMap里。
  • BatchExecutor: 批处理执行器,针对写操作,但是不是你想的那种批处理,他是将每次要执行的SQL语句,扔到一个集合里,等你commit之后,再一个一个扔给数据库执行。

**选择Executor,默认是在MyBatis的核心配置文件中修改settings,指定defaultExecutorType
在这里插入图片描述

http://www.xdnf.cn/news/310951.html

相关文章:

  • kaggle注册问题
  • 瑞克的CTF
  • vue3 报错
  • 高频工业RFID读写器-三格电子
  • 天线测试报告解读学习
  • 【爬虫】码上爬第6题-倚天剑
  • 【AI知识库云研发部署】RAGFlow + DeepSeek
  • 第九节:图像处理基础-图像几何变换 (缩放、旋转、平移、翻转)
  • 1999-2023年各数据/研发经费内部支出数据/RD经费内部支出数据
  • JavaScript性能优化实战:深入探讨性能瓶颈与优化技巧
  • NAND Flash存储器的错误管理导览
  • 超短波跳频电台靶标设备 智能超短波通信模拟系统技术解析“
  • Chat_TTSV3 本地版 Chat_TTS—UI本地版 免费分享
  • 算法每日一题 | 入门-顺序结构-三角形面积
  • 从单机到生产:Kubernetes 部署方案全解析
  • 删除排序链表中的重复元素:三种解法详解
  • 电子电器架构 --- 网关转发时延解析
  • PostgreSQL存储过程“多态“实现:同一方法名支持不同参数
  • 亚马逊Q1财报公布!营收增长9%至1557亿美元
  • QT Sqlite数据库-教程03 插入数据-下
  • 信息论05:信息论中的条件熵——从不确定性量化到机器学习实战
  • opencv实战:银行卡卡号识别
  • 效率提升利器:解锁图片处理新姿势
  • MySQL的内置函数与复杂查询
  • 【Python面向对象编程】类与对象的深度探索指南
  • Python训练打卡Day17
  • 让混乱的讨论变成有效产出的智能助手
  • 51单片机入门教程——AT24C02(I2C 总线)
  • QGIS分割平行四边形
  • ctfshow web入门 web52