
Mybatis
文章平均质量分 75
第七个香粽
学无止境~
展开
-
Mybatis - 下划线命名字段和驼峰命名属性的赋值问题
可以发现,凡是数据库中列明是下划线分割的。在转化为实体类对象的时候,对应的字段名全部是。先给大家看下我的表中的列名称:都是以下划线来分割的。再看下我的后端实体类对象:标准的。对应的字段就成功赋值了。的一个驼峰命名配置,在。原创 2022-10-21 21:52:49 · 1614 阅读 · 1 评论 -
Mybatis - 批量插入Batch操作
1.我们可以写一个配置类,代码里面就可以通过注解直接引入。操作的时候,真正地执行。备注,你可以配置下文件。原创 2022-10-21 14:10:56 · 1754 阅读 · 0 评论 -
Mybatis - 系列文章导航
Mybatis系列文章导航专栏原创 2022-10-09 10:56:05 · 212 阅读 · 0 评论 -
Mybatis - Spring整合后回滚失效并且自动保存了?
Mybatis - 单机器下二级缓存脏读问题的解决(TransactionalCache的运用)当时写的项目案例中,我发现事务回滚无法失效,虽然结果上并不影响二级缓存的一个结论。但是这个问题一直困扰了我好久。最后看了源码才发现问题出在哪里。原创 2022-10-06 21:23:39 · 2589 阅读 · 0 评论 -
Mybatis - 单机器下二级缓存脏读问题的解决(TransactionalCache的运用)
上篇文章Mybatis - 一二级缓存的原理Cache实例和实例之间存在着映射关系。而从源码来看,二级缓存这个真实的数据是保存在Cache中的。那么问题来了:两者之间为什么还要做个映射呢?因此我在这篇文章中做个简要的分析。Mybatis使用一个映射缓存来解决脏读的问题。只有事务提交的时候,对应的数据才会放入到二级缓存中,否则无法读取。默认的情况下,Mybatis将一二级缓存都存储到本地缓存中。因此在单机器下,Mybatis本身引入这样的机制能解决二级缓存的脏读问题。原创 2022-10-06 18:36:19 · 1024 阅读 · 0 评论 -
Mybatis - 一二级缓存的原理
我们直到Mybatis一级缓存:默认开启。SqlSession级别。二级缓存:需要手动开启。namespace级别。那么在了解一二级缓存的原理之前,我们应该先知道其相关的知识。一级缓存默认开启,底层查询基于一级缓存实现。一级缓存的Key是一种MapperID+offset+limit+Sql+入参的组合。可以参考下图:3.一级缓存失效的原因总结:更新操作、事务提交、回滚、SqlSession会话关闭、。一级缓存属性设置为STATEMENT。原创 2022-10-06 16:45:41 · 1454 阅读 · 0 评论 -
Mybatis - Spring整合后一级缓存失效了
我们都知道Mybatis默认开启了一级缓存,二级缓存需要手动开启。我自己最近也在复习Mybatis相关的知识。但是在写的时候,发现一级缓存并没有生效,因此特此记录。首先可以看这篇文章Mybatis - 预编译的运用和原理搭建一个项目。创建一个SqlSession。如果当前的函数没有事务声明,则提交当前事务。关闭当前的SqlSession。程序执行了多次函数,调用相同的SQL,Mybatis默认开启了一级缓存,因此理论上来看,应该只有第一次是走了SQL。后续都是走缓存才对。但是实际上却每次都执行了。原创 2022-09-30 16:53:43 · 1746 阅读 · 1 评论 -
Mybatis - 开启二级缓存和NotSerializableException异常处理
首先大家可以看这片文章去搭建一个最基础的SpringBoot整合MybatisMybatis - 预编译的运用和原理。原创 2022-09-30 15:20:40 · 774 阅读 · 0 评论 -
Mybatis - 预编译的运用和原理
首先我们来说下预编译的一个背景:我们知道一条SQL语句到达Mysql之后,Mysql并不是会马上执行它,而是需要经过几个阶段性的动作(细节的可以查看Mysql复习计划(一)- 字符集、文件系统和SQL执行流程缓存的检查。解析器解析。优化器解析。执行器执行。那么这几个阶段肯定是需要一定的时间的。而有时候我们一条SQL语句可能需要反复的执行,只不过里面的参数可能不一样,比如where子句中的条件。如果每次都需要经过上面的几个步骤,那么效率就会下降。因此为了解决这种问题,就出现了预编译。原创 2022-09-29 20:07:07 · 6755 阅读 · 0 评论