当前使用版本(必填,否则不予处理)

3.5.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

执行逻辑删除时,updateTime未更新;

重现步骤(如果有就写完整)

this.lambdaUpdate().eq(SchoolBook::getSchoolId,schoolId) .in(SchoolBook::getBookId,delBookIds) .remove() 看了下源码,参数处理时未获取到tableInfo,未进入填充逻辑;

报错信息

Comment From: miemieYaho

填充只能填充到entity里

Comment From: yuge1805

填充只能填充到entity里

近期有规划解决吗?没有的话,我可以试试嘛?

Comment From: miemieYaho

解决不了,就这样的

Comment From: yuge1805

解决不了,就这样的

LambdaUpdateChainWrapper增加一个属性Class entityClass; 在Service层,调用lambdaUpdate()创建LambdaUpdateChainWrapper时,将EntityClass传递给wrapper; 1700727046634 在getWrapper时,调用EntityClass的构建函数,反射创建Entity,赋值给wrapper; 这样子,是否可以呢?

Comment From: miemieYaho

不可以,你应该自己new进去

Comment From: yuge1805

this.lambdaUpdate().remove() 这个没提供new的场景呀,刚才说的是对这个场景的扩展支持

Comment From: yuge1805

我get到了你点了,自动生成mapper脚本中,确实没有参数可以支持更新字段;

<script>
UPDATE test_demo SET del_status=1 
<where>
<choose>
<when test="ew != null">
<if test="ew.entity != null">
<if test="ew.entity.id != null">id=#{ew.entity.id}</if>
<if test="ew.entity['planId'] != null"> AND plan_id=#{ew.entity.planId}</if>
<if test="ew.entity['scheduleStatus'] != null"> AND schedule_status=#{ew.entity.scheduleStatus}</if>
<if test="ew.entity['errorMsg'] != null"> AND error_msg=#{ew.entity.errorMsg}</if>
<if test="ew.entity['createTime'] != null"> AND create_time=#{ew.entity.createTime}</if>
<if test="ew.entity['createUserId'] != null"> AND create_user_id=#{ew.entity.createUserId}</if>
<if test="ew.entity['createUserName'] != null"> AND create_user_name=#{ew.entity.createUserName}</if>
<if test="ew.entity['updateTime'] != null"> AND update_time=#{ew.entity.updateTime}</if>
<if test="ew.entity['updateUserId'] != null"> AND update_user_id=#{ew.entity.updateUserId}</if>
<if test="ew.entity['updateUserName'] != null"> AND update_user_name=#{ew.entity.updateUserName}</if>
</if>
 AND del_status=0
<if test="ew.sqlSegment != null and ew.sqlSegment != '' and ew.nonEmptyOfNormal">
AND ${ew.sqlSegment}
</if>
<if test="ew.sqlSegment != null and ew.sqlSegment != '' and ew.emptyOfNormal">
 ${ew.sqlSegment}
</if>
</when>
<otherwise>del_status=0</otherwise>
</choose>
</where> <if test="ew != null and ew.sqlComment != null">
${ew.sqlComment}
</if>
</script>

Comment From: yuge1805

@miemieYaho 大佬,尝试修改了下,提了个pull request, 修改方式有问题的话,可以沟通,测试用例结果是OK的

Comment From: chess3cake

@yuge1805 我们是自己在mapper上做了个method来处理,需要传入entity作为参数,因为mybatisplus处理更新参数注入时需要有一个对象 MyBatis-Plus 使用lambdaUpdate().remove()更新时,自动填充失效 MyBatis-Plus 使用lambdaUpdate().remove()更新时,自动填充失效

Comment From: yuge1805

@yuge1805 我们是自己在mapper上做了个method来处理,需要传入entity作为参数,因为mybatisplus处理更新参数注入时需要有一个对象

一样的想法,我在PR里也是这么改的。奈何官方人员只是说解决不了,然后直接关了PR,没有任何沟通的想法。┓( ´∀` )┏