mybatis-plus的@TableLogic实现原理

mybatis-plus的@TableLogic实现原理

众所周知mybatis-plus提供逻辑删除的配置,只需要在数据表的org实体的对象中,对删除标记字段设置@TableLogic注解,并且在配置文件中,设置对应的字段名称即可。
mybatis-plus的@TableLogic实现原理_第1张图片

mybatis-plus的@TableLogic实现原理_第2张图片

但是如果想深究理解其逻辑,方便以后可以自行实现或者修改也是有一定帮助的。通过下载源码查找相关的源头,发现其实其逻辑就是,再生成动态的通用的sql时候判断实体对象中是否有@TableLogic, 然后进行判断是否把delete语句修改为update的语句,达到逻辑删除的效果。

第一步扫描表org实体对象的字段,进行初始化,并把分析的数据,封装成tableInfo对象
mybatis-plus的@TableLogic实现原理_第3张图片

mybatis-plus的@TableLogic实现原理_第4张图片
第二步, 根据tableInfo对象,分析的逻辑删除的字段信息,生成逻辑删除的sql,并解析成xml节点对象
mybatis-plus的@TableLogic实现原理_第5张图片
mybatis-plus的@TableLogic实现原理_第6张图片

mybatis-plus的@TableLogic实现原理_第7张图片
第三步,把生成的xml可以解析的节点对象,加入到MappedStatement中,
这个是映射id与sql的对象。

mybatis-plus的@TableLogic实现原理_第8张图片
mybatis-plus的@TableLogic实现原理_第9张图片
大致实现逻辑就是这样。各位如果感兴趣可以自行断点查看, com.baomidou.mybatisplus.core.injector.AbstractMethod, 我查看的版本是mybatis-plus3.4.1

你可能感兴趣的:(mybatis-plus,java,开发语言,后端)