首页 > 其他分享 >Mybaits-plus采坑之UpdateWrapper 更新字段重复

Mybaits-plus采坑之UpdateWrapper 更新字段重复

时间:2023-09-11 19:02:15浏览次数:45  
标签:采坑 重复 数据库 更新 Mybaits Plus UpdateWrapper MyBatis plus

Mybaits-plus采坑之UpdateWrapper 更新字段重复

Mybaits-plus简介

MyBatis-Plus 是基于 MyBatis 的增强工具库,旨在简化 MyBatis 的开发。它提供了一系列的功能和特性,可以提高开发效率,减少重复的编码工作,并且与原生的 MyBatis 兼容。

下面是 MyBatis-Plus 的一些主要特点和功能:

  1. 简化 CRUD 操作:MyBatis-Plus 提供了通用的 CRUD 接口和方法,通过继承和配置,可以快速进行数据库的增删改查操作,减少了编写重复的 SQL 语句的工作。

  2. 条件构造器:MyBatis-Plus 的条件构造器(Wrapper)提供了一种灵活的查询条件构建方式,可以通过链式调用的方式组装查询条件,支持动态条件的拼接,减少了手动拼接 SQL 的繁琐工作。

  3. 分页查询:MyBatis-Plus 提供了方便的分页查询支持,可以轻松实现分页查询功能,支持多种数据库的分页方式。

  4. 代码生成器:MyBatis-Plus 提供了代码生成器工具,可以根据数据库表结构自动生成实体类、Mapper 接口和 XML 映射文件,减少了手动编写这些代码的工作量。

  5. 乐观锁支持:MyBatis-Plus 内置了乐观锁的支持,可以通过注解和版本号字段实现乐观锁的机制,方便处理并发更新的场景。

  6. 主键生成策略:MyBatis-Plus 提供了多种主键生成策略,可以根据需求选择适合的主键生成方式,如自增主键、雪花算法、UUID 等。

  7. Lambda 表达式支持:MyBatis-Plus 支持使用 Lambda 表达式进行条件构造,可以通过 Lambda 表达式更直观地构建查询条件,提高代码可读性。

总体来说,MyBatis-Plus 提供了丰富的功能和工具,可以简化开发者对数据库的操作,提高开发效率。它与原生的 MyBatis 框架兼容,并且易于集成到现有的项目中。无论是小型项目还是大型项目,MyBatis-Plus 都是一个强大而受欢迎的数据库访问工具库。

问题描述

baseMapper.update(group, new LambdaUpdateWrapper<Group>()
                  .eq(Group::getId, newGroup.getId())
                  .set(Group::getPid, newGroup.getNewGroupPid()));
Preparing: UPDATE group SET name=?, pid=?, level=?, type=?, create_by=?, data=?, create_time=?, update_time=?, pid=? WHERE is_deleted=0 AND (id = ?)

UpdateWrapper 或者 LambdaUpdateWrapper 更新实体的指定字段时,Mybatisplus插件 update() 生成的sql字段重复,而我们需要的实际情况应该是更新为UpdateWrapper set字段加上自动填充字段、乐观锁字段,但是实际情况字段pid重复出现了,Mysql数据库不报错,换用其他数据库报错更新字段重复。

解决方案

重新 new 一个新的对象,通过spring的 BeanUtils.copyProperties() 方法拷贝一份,修改内容后使用 update() 方法进行更新,切勿使用 set() 进行指定字段更新。

gitee上issue

git问题单:UpdateWrapper 更新字段重复

标签:采坑,重复,数据库,更新,Mybaits,Plus,UpdateWrapper,MyBatis,plus
From: https://blog.51cto.com/u_15399050/7437905

相关文章