今天前端小伙伴说我明明给你传了del_flag =1 ,为啥数据也没删除呢?我想肯定是前端数据传错了,怎么可能会不执行呢?但是我还是很客气的说,你把你的参数给我一下,我去看看。参数拿到手后,本地bug 调试发现没有报任何异常,接着查了一下数据库,果然数据还真在,
不敢相信自己的眼睛的我,又重新执行了一下,结果数据还在,数据库还是0,然后我试着改变其他的字段,数据竟然修改了,这真是奇怪了。
然后我就看执行的方法,方法很简单
就是继承了myibats 的底层方法,没任何特殊处理之处,那我就开始怀疑的实体类有问题了,结果一看还真发现了问题
因为之前没用过这个注解,本着测试的心态,然后去掉注解,再测试了一下就好使了。之前为啥没有遇到呢,是因为我们都是这样的方式实现的
所以一直都是好使的,直到遇到我这次用了
才发现这个问题。
解决的方式也很简单
实体类是mybatis-plus一键生成的,如图:
我们只需要把delFlag 提到自己对象的实体类上,这样就不会去找父类下的delFlag ,这样就不会用到注解,问题就完美解决。
总结:
@tablelogic 这个注解还是很有用的,可以节省我们很多的时间,会把查询修改的时候自动加上 ,但是如果要更新这个字段,我们可以单独去set 处理,像我那种必须要在对象中处理的,就重写一下该字段就好。
结尾附上配置
# mybatis-plus
mybatis-plus:
mapper-locations: classpath*:mapper/*Mapper.xml
global-config:
db-config:
id-type: auto
# 非NULL判断
update-strategy: not_null
logic-delete-field: del_flag
logic-delete-value: 1
logic-not-delete-value: 0
一直想着把自己遇到坑,记录下来,总是想了很多很少付出行动,虽然这次只是一个很小的点,也许理解还不够透彻,但是我终于战胜了自己,迈出了第一步。如果有理解错误的,希望看到的小伙伴及时纠正,我们一起成长!