Mybatis-Plus基础之Mapper增删改
2023-12-25 17:18:21
文章目录
一、普通增删改
普通新增
插入一条记录。
int insert(T entity);
参数 entity 是实体对象,即要插入的数据内容。
普通删除
根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
- 参数 wrapper 是实体对象封装操作类(可以为 null),用以表示删除条件。
- 参数 wrapper 可以为 null,表示删除所有。
根据 ID 批量删除
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
- 参数 idList 是主键 ID 列表,表示待删除的多条数据的主键 ID 。
- 参数 idList 不能为 null,也不能是 empty 。
根据 ID 删除
int deleteById(Serializable id);
- 参数 id 是主键 ID 。
根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
- 参数 columnMap 是表字段 map 对象
普通修改
根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity,
@Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
- 参数 entity:实体对象 ( set 条件值,可为 null )
- 参数 updateWrapper:实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
- 参数 entity:实体对象(set 条件值,可为 null)
二、insert ID 主键回填
insert 后主键会自动 set 到实体的 ID 字段,所以你只需要 getId()
就好。
三、条件删除:使用 Wrapper
预期执行的 SQL 如下:
DELETE FROM department WHERE name = 'test';
使用 Wrapper 对应 Java 中的实现如下:
Wrapper<Department> wrapper = new QueryWrapper<Department>().eq("name", "test");
departmentDao.delete(wrapper);
四、条件修改:使用 Wrapper
预期执行的 SQL 如下:
update
department
set name = 'hello-new',
location = 'world'
where
name = 'hello';
使用 Wrapper 对应 Java 中的实现如下:
Department department = new Department(null, "hello-new", "world");
Wrapper<Department> wrapper = new QueryWrapper<Department>()
.eq("name", "hello");
departmentDao.update(department, wrapper);
注意
这里的 null 值表示保持原址不变。
五、插入或更新的字段有空字符串或 null
方式有 3 种。最新、也是最灵活的是使用 UpdateWrapper 。它需要 mybatis-pulus 在 3.0+ 。
使用以下方法来进行更新或插入操作:
//updateAllColumnById(entity) // 全部字段更新: 3.0已经移除
mapper.update(
new User().setName("mp").setAge(3), // 非 null 的设值放这里
Wrappers.<User>lambdaUpdate()
.set(User::getEmail, null) // null 的设置放这里
.eq(User::getId, 2) // 再加上查询条件
);
也可以参考下面这种写法:
mapper.update(
null,
Wrappers.<User>lambdaUpdate()
.set(User::getAge, 3)
.set(User::getName, "mp")
.set(User::getEmail, null) //把email设置成null
.eq(User::getId, 2)
);
六、逻辑删除
-
步骤 1:配置 com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig。
mybatis-plus: global-config: db-config: logic-delete-field: flag ### 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤 2) logic-delete-value: 1 ### 逻辑已删除值(默认为 1) logic-not-delete-value: 0 ### 逻辑未删除值(默认为 0)
-
步骤 2:加上注解。
@TableLogic private Integer deleted;
七、乐观锁
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
在实体类的字段上加上 @Version 注解:
@Version
private Integer version;
注意
在使用 MybatisPlus 乐观锁功能的时候,记得在你的 update 功能中,为你的 实体类的 version 字段赋值。这样,你才能在 MP 执行的 SQL 语句中看到乐观锁逻辑。
文章来源:https://blog.csdn.net/m0_73393501/article/details/135196062
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!