mybatis-plus字段策略注解strategy

最近项目中遇到一个问题,是关于mybatis-plus的字段注解策略,记录一下。

1问题

调用了A组件(基础组件),来更新自身组件的数据,发现自己组件有个字段总是被清空。

2原因分析

调用的A组件的字段,属于基础字段,自己业务组件,对这个基础字段做了扩展,增加了业务字段。但是在自己的组件中的实体注解上,有一个注解使用错误。

mybatis-plus封装的updateById方法,如果实体类上没有添加策略注解,默认会对null字段加以判断,也就是说,如果传入的字段是null,mybatis-plus不会更新该字段的值。这是mybatis-plus的默认策略(默认对null传参的判断)。

一般想要把一个字段设置成null值,就需要像我上面截图这样,改变默认策略, 在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断,也就是说,我就不在判断了,你传参是啥,我就更新成啥,传入了null,我就将该字段更新成null。

3总结

mybatis-plus的实体注解策略有三种:

NOT_NULL:默认策略,非NULL判断(判断传参为null时,不会更新该字段)

IGNORED:忽略判断(不去判断传参是否是null,如果传入null,就更新该字段值为null)

NOT_EMPTY:非空判断(如果传入的参数是“”空字符串或者null,不会插入数据库)

我看到网上有的解释更加直观:

ignored  不管有没有有设置属性,所有的字段都会设置到insert语句中,如果没设置值,全为null,这种在update 操作中会有风险,把有值的更新为null 

not_null,也是默认策略,也就是忽略null的字段,不忽略""

not-empty  为null,为空串的忽略,就是如果设置值为null,“”,不会插入数据库

 

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个基于 Spring 框架的快速开发框架,而 MyBatis-Plus 则是 MyBatis 的增强工具,提供了很多方便的查询和操作数据库的 API。下面是 Spring Boot 加 MyBatis-Plus 的使用说明: 1. 配置 MyBatis-Plus 在 pom.xml 文件中添加 MyBatis-Plus 的依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.3</version> </dependency> ``` 在 application.yml 文件中添加数据库连接信息和 MyBatis-Plus 的配置: ``` spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath:mapper/*.xml global-config: db-config: id-type: auto field-strategy: not_empty table-prefix: mp_ ``` 2. 创建实体类和 Mapper 接口 创建实体类和对应的 Mapper 接口,使用 @TableName 注解指定表名,@TableField 注解指定字段名。 ``` @Data @TableName("user") public class User { @TableId(type=IdType.AUTO) private Long id; @TableField("username") private String username; @TableField("password") private String password; } @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 3. 使用 MyBatis-Plus 的 API 进行数据库操作 使用 MyBatis-Plus 的 API 进行数据库操作非常方便,比如查询所有用户: ``` @Autowired private UserMapper userMapper; public List<User> getAllUsers() { return userMapper.selectList(null); } ``` 其他常用的 API 包括:insert、updateById、deleteById、selectById 等。 以上就是 Spring Boot 加 MyBatis-Plus 的简单使用说明,更多详细的使用方法可以参考 MyBatis-Plus 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值