0
点赞
收藏
分享

微信扫一扫

mybatis-plus的@TableLogic实现原理

黄昏孤酒 2022-01-26 阅读 53

mybatis-plus的@TableLogic实现原理

众所周知mybatis-plus提供逻辑删除的配置,只需要在数据表的org实体的对象中,对删除标记字段设置@TableLogic注解,并且在配置文件中,设置对应的字段名称即可。
在这里插入图片描述

在这里插入图片描述

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

第一步扫描表org实体对象的字段,进行初始化,并把分析的数据,封装成tableInfo对象
在这里插入图片描述

在这里插入图片描述
第二步, 根据tableInfo对象,分析的逻辑删除的字段信息,生成逻辑删除的sql,并解析成xml节点对象
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
第三步,把生成的xml可以解析的节点对象,加入到MappedStatement中,
这个是映射id与sql的对象。

在这里插入图片描述
在这里插入图片描述
大致实现逻辑就是这样。各位如果感兴趣可以自行断点查看, com.baomidou.mybatisplus.core.injector.AbstractMethod, 我查看的版本是mybatis-plus3.4.1

举报

相关推荐

0 条评论