Mybatis-Plus中小知识点

举报
多米诺的古牌 发表于 2022/09/26 21:13:58 2022/09/26
【摘要】 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。在开发过程中,MyBatis-Plus给我们带来了很多的遍历,一些简单逻辑的sql操作可以不用再写sql通过简单的一两行代码就可以完成。

1.MyBatis-Plus简介

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。在开发过程中,MyBatis-Plus给我们带来了很多的遍历,一些简单逻辑的sql操作可以不用再写sql通过简单的一两行代码就可以完成。

2.MyBatis-Plus的使用

MyBatis-Plus在开发过程中的使用常常跟lombok一起使用,通过lombok来简化实体类的创建。然后通过创建自己的IBaseService 继承Mybatis-Plus提供的基类,最后用自己创建的service对象调用,就可以便捷的调用MyBatis-Plus中封装好的各种实用的CRUD方法了(插入、更新、删除、根据id插入、根据id更新、根据id删除、批量处理数据等),我们还可以传入创建的Wrapper对象来添加各种筛选条件。

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
}
...
// 插入
boolean save(T entity);
// 批量插入
boolean saveBatch(Collection<T> entityList);
// 批量插入,每次插入数量
boolean saveBatch(Collection<T> entityList, int batchSize);

...
// 更新或插入
boolean saveOrUpdate(T entity);
...

// 根据UpdateWrapper条件更新
boolean update(Wrapper<T> updateWrapper);
// 根据ID更新
boolean updateById(T entity);
// 根据ID批量更新
boolean updateBatchById(Collection<T> entityList);
3.MyBatis-Plus存在的小问题

在Mybatis-Plus中调用updateById方法进行数据更新默认情况下是不能更新空值字段的,而在实际开发过程中,经常会遇到需要将字段值更新为空值的情况。那么我们应该怎么去改进呢?

因为Mybatis-Plus中字段的更新策略是通过FieldStrategy属性控制的,它是在实体字段上,如果不通过@TableField注解指定字段的更新策略,字段默认的更新策略就是FieldStrategy.DEFAULT,即跟随全局策略。 而Mybatis-Plus的全局配置里字段的默认更新策略是FieldStrategy.NOT_NULL是进行空值判断的,不会对NULL值数据进行处理的。 

知道了问题那么我们就可以通过问题去探索解决方案了,我们可以设置字段级别的更新策略为IGNORED就可以了,只需要在实体中字段上面通过@TableField注解指定字段的更新策略为FieldStrategy.IGNORED,忽略空值判断直接进行更新就可以了。

@TableField(updateStrategy = FieldStrategy.IGNORED) 
private String name;
还可以设置全局更新策略的IGNORED ,通过修改Mybatis-Plus的项目级别的全局更新策略来进行控制, 在spring boot中只需要修改属性: mybatis-plus.global-config.db-config.update-strategy=ignored就可以完成策略的变更。

以上就是Mybatis-Plus中小知识点的总结。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。