u一枚蒟蒻
花开堪折直须折
展开
-
Mybatis | 例析各动态标签解析过程
从《Mybatis | 动态 SQL 原理分析》这篇博客可以了解到, Mybatis 在解析 SQl 映射语句时,将其视为树结构。树结构有一个及其重要特点 —— 树是通过递归定义的,即“一棵树由根节点和多个不相交子树构成”。原创 2022-01-17 08:25:04 · 388 阅读 · 2 评论 -
Mybatis | 开发实用技巧
本文主要分享了如下几个Mybatis实用技巧一、Foreach 安全操作,避免数据误伤二、使用内建别名三、调试 Ognl四、 Mapper 接口参数引用原创 2022-01-11 20:23:09 · 935 阅读 · 1 评论 -
Mybatis | 反射工具类大集合
MyBatis 要实现通过 XML 设置 JavaBean 到 SQL 参数和 JDBC 结果集到 JavaBean 之间映射规则,中间肯定少不了 Java 反射。Mybatis 将 Java 反射进行了封装,并将封装后的工具类放在包 org.apache.ibatis.reflection 下,比如该包下包含 Reflector,ReflectorFactory,MetaObject,MetaClass,BeanWrapper,PropertyTokenizer 等。原创 2022-01-11 09:00:00 · 362 阅读 · 2 评论 -
Mybatis | 动态 SQL 原理分析
日拱一卒无有尽,功不唐捐终入海。如果 SQL 语句中包含 trim | where | set | foreach | if | choose | when | otherwise | bind 标签或者字符串替换符「 $ 」,MyBatis 就认为其为动态 SQL,在执行时会根据 Mapper 接口方法传入的参数动态计算 SQl 语句。原创 2022-01-05 09:00:00 · 305 阅读 · 0 评论 -
Mybatis | 动态 SQL 基石 —— Ognl
动态 SQL 是 MyBatis 的强大特性之一。如果使用过 JDBC 或其它类似的框架,应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。除了 if, Mybatis 还支持 choose,when,otherwise,trim,where 等动态 SQL 元素,值得注意的是,这些元素中有些属性是需要通过表达式计算的,比如 if 元素的 test 属性。原创 2021-12-30 09:00:00 · 2225 阅读 · 1 评论 -
SqlSessionTemplate 如何保证线程安全性以及关联 Spring Framework 事务?
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。本文基于源码,从如下几个着重点解决这个问题:DefaultSqlSession`线程不安全分析; SqlSessionTemplate 如何保证线程安全性; SqlSessionTemplate 如何管理 SQL 会话生命周期,包括关闭,提交或者必要时回滚等;SqlSessionTemplate 如何关联 Spring 当前事务;原创 2021-12-23 14:01:46 · 1060 阅读 · 1 评论 -
Mybatis 向 Spring IOC 容器注册的 Mapper 接口是啥?
本文源码使用到 Jar 包版本约束如下:Spring Boot,2.4.12;mybatis-spring-boot-starter,1.3.2;一、概述在 Spring Boot 下使用 Mybatis 开发项目过程中,通常步骤是先定义 Mapper 接口,然后再编写与其对应的 XML 映射文件,这样就可以在需要使用数据库表操作地方直接将 Mapper 注入进来使用即可。不需要写 Mapper 接口实现,好比 XML 映射文件就是 Mapper 接口实现一样。这里不禁就有一个疑问 —— My原创 2021-12-14 18:52:13 · 563 阅读 · 1 评论 -
从源码角度探索 Mybatis 插件注册方式
通过上一篇博客《深入 Mybatis 插件机制》了解了插件原理,并且 Mybatis 所有插件都保存在 Configuration 的 interceptorChain 属性中,在 Configuration 中提供了注册插件方法 addInterceptor(Interceptor interceptor) 将插件添加到 interceptorChain ,那用户怎么向 Configuration 注册插件呢?结合源码,本文分享了四种注册 Mybatis 插件方式:直接注册到 Spring IOC原创 2021-12-10 15:08:23 · 881 阅读 · 0 评论 -
深入 Mybatis 插件机制
在使用 Mybatis 查询时,通常会使用 PageHelper 分页插件分页,这样就可以不在 SQL 中写 limit 和 count ,比较方便。除此之外, Mybatis 插件还常用于数据脱敏,自动填充字段(全局唯一Id,数据生成时间,数据创建者,数据修改时间,数据修改者等等),数据库字段加密,水平分表,菜单权限控制,黑白名单等。Mybatis 插件用法和 Spring AOP 环绕通知很像,但是定义切点方式不同, 具体使用方法,可参考官方文档。Spring AOP 是通过代理实现,那 Myb原创 2021-12-09 15:26:51 · 593 阅读 · 2 评论