
MyBatis & MyBatisPlus
文章平均质量分 95
对日常使用的 MyBatis 以及 MyBatisPlus 进行整理学习。
程序猿进阶
要做就做第一,就算结果不是第一,也会是一个好成绩。 加油!我的未来不是梦。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MyBaits 二级缓存原理
默认关闭,一般不建议使用。为什么不建议使用我们要清楚。MyBatis的二级缓存是和命名空间绑定的,所以通常情况下每一个Mapper映射文件都拥有自己的二级缓存,不同Mapper的二级缓存互不影响。在常见的数据库操作中,多表联合查询非常常见,由于关系型数据库的设计, 使得很多时候需要关联多个表才能获得想要的数据。在关联多表查询时肯定会将该查询放到某个命名空间下的映射文件中,这样一个多表的查询就会缓存在该命名空间的二级缓存中。原创 2024-09-05 08:09:55 · 1682 阅读 · 44 评论 -
MyBatis 一级缓存原理
值去本地缓存中查找,如果在缓存中,就直接从缓存中取出,然后返回给用户;执行结果:我们可以看到,只有第一次真正查询了数据库,后续的查询使用了一级缓存。的学生的名字还是小明,出现了重复读,说明一级缓存只在数据库会话内部共享。中更新数据库,验证一级缓存只在数据库会话内部共享。通过上面的使用,能够清楚的发现,一级缓存主要是基于。会话中执行的所有语句,都会共享这一个缓存。的一级缓存进行可重复读,就需要进行一级缓存清除。,对于每一次查询,都会尝试根据执行的语句生成的。中查询数据,使一级缓存生效,在。原创 2024-09-03 05:30:00 · 1599 阅读 · 46 评论 -
MyBatis 源码
【1】根据配置文件(全局,sql映射)初始化出 Configuration 对象;【2】创建一个 DefaultSqlSession对象,他里面包含 Configuration以及 Executor(根据全局配置文件中的 defaultExecutorType创建出对应的 Executor);【3】DefaultSqlSession.getMapper():拿到 Mapper接口对应的 MapperProxy;【4】MapperProxy里面有(DefaultSqlSession);原创 2024-05-17 05:00:00 · 1415 阅读 · 122 评论 -
MyBatis 整体架构【包含 SQL执行流程】
【1】SqlSession:它是 MyBatis 核心 API,主要用来执行命令,获取映射,管理事务。接收开发人员提供 Statement Id 和参数。并返回操作结果。【2】Executor :执行器,是 MyBatis 调度的核心,负责 SQL 语句的生成以及查询缓存的维护。【3】StatementHandler : 封装了JDBC Statement 操作,负责对 JDBC Statement 的操作,如设置参数、将 Statement 结果集转换成 List 集合。原创 2024-05-16 05:00:00 · 1452 阅读 · 42 评论 -
Java面试——MyBatis
【1】Hibernate 是一个标准的 ORM 框架,面向对象开发,不需要写 SQL语句,维护数据表关系比较复杂,SQL 语句自动生成,对 SQL语句优化,修改比较困难。SqlSession 是 Mybatis 最重要的构建之一,可以简单的认为 Mybatis一系列的配置目的是生成类似 JDBC 生成的Connection 对象的 SqlSession 对象,这样才能与数据库开启“沟通”,通过 SqlSession 可以实现增删改查。而 ${} 主要用于 SQL拼接的时候,有很大的 SQL注入隐患。原创 2024-05-11 05:00:00 · 1883 阅读 · 106 评论 -
MyBatis 版本升级引发的线上问题
MyBatis 版本升级引发的线上问题MyBatis上线前后的版本:上线前(3.2.3)上线后(3.4.6)服务上线后,开始陆续出现了一些更新系统交互日志方面的报警,这属于系统的辅助流程,报警如下代码所示。我们发现都是跟 MyBatis相关的报警,说明在进行类型转换 [ibatis.type.TypeException]的时候,系统产生了强转错误。更新开票请求返回日志, id:{#######}, response:{{"code":XXX,"data":{"callType":3,"code":转载 2021-01-03 12:27:26 · 1397 阅读 · 4 评论