mybaits-plus自动填充字段失效。
最近在使用mybatis-plus发现一件比较奇怪的事儿,使用metaHandler自动填充的字段竟然为空,然后就试着去进行了搜索,原因即解决方法如下:
https://blog.csdn.net/kingwinstar/article/details/113418552
看到这里就发现其实你在调用update(Wrapper)时,实际调用的是update(null,Wrapper)这个函数,
感觉是不是mybatis-plus在开发的时候漏了这个地方,后面去mp的github项目中找到了前辈们问过的问题中就有,链接如下:
https://github.com/baomidou/mybatis-plus/issues/3228
看到提问者的解决方法,直接去构造一个实例,然后进行传入进行了修改,开发者认为有默认构造函数不存在的情况(确实有,但是在lombok经常使用的情况下,漏掉空参构造的情况基本不存在,也可能我自己没遇到过这种场景),不如把调用的方式留给调用者去解决,自己new一个即可。
以上的问题就感觉到很矛盾的一点,不如直接entity必须进行传递不可以吗?那么就不会有这种类似于坑的问题了。对于没有阅读到源码的人,只有看到结果才能发现这个小问题,既然handler已经跟mp的接口有了矛盾点,不如干掉这个函数。 当然这种函数的存在有其合理性,没有必填字段,开发的时候也能随意进行调用,感觉这就属于锦上添花的时候突然发现跟原有的调用方式出现了偏差。
虽然可以自己进行解决,但是毕竟工具并没有自己亲身去实验很多次,大部分人只是按照最平常的方式进行使用,遇到坑后发现估计也得很久,这时入库的数据得有多少是缺失字段值的,虽然根据这些字段进行溯源是可以的,但是类似于填充字段其实基本也没什么人去关注。