LambdaQueryWrapper 保存null
时间: 2023-10-13 21:28:26 浏览: 83
在使用LambdaQueryWrapper进行数据操作时,如果要保存一个空值,可以使用`null`或者`""`(空字符串)。但是,需要注意的是,如果数据库定义该字段为非空字段,保存`null`会导致保存失败。
一种解决方法是在实体类中对该字段进行注解,如使用`@TableField(value = "field_name", insertStrategy = FieldStrategy.IGNORED)`,该注解中的`insertStrategy`参数指定了插入时的策略,`FieldStrategy.IGNORED`表示插入时忽略该字段。
另一种解决方法是在保存时手动判断该字段是否为`null`,如果为`null`则不进行保存,例如:
```java
if (entity.getFieldName() != null) {
lambdaQueryWrapper.set(entity::getFieldName, entity.getFieldName());
}
```
这样可以避免保存`null`导致的失败。
相关问题
LambdaQueryWrapper 字段保存null
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询条件构造器,用于方便地构建复杂的查询条件。在 LambdaQueryWrapper 中,字段保存 null 的方式是通过使用 isNull 方法来实现的。
当需要查询某个字段为 null 的记录时,可以使用 LambdaQueryWrapper 的 isNull 方法来指定字段为 null。示例如下:
```java
LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.isNull(Entity::getField);
```
上述代码中,Entity::getField 表示要查询的字段,通过 isNull 方法指定该字段为 null。
如果需要查询某个字段不为 null 的记录,可以使用 isNotNull 方法:
```java
LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.isNotNull(Entity::getField);
```
上述代码中,isNotNull 方法表示查询字段不为 null 的记录。
LambdaQueryWrapper 保存空数据
如果你使用的是 MyBatis-Plus 框架提供的 LambdaQueryWrapper 进行数据操作,那么当你使用它的 save 方法保存空数据时,实际上它会将所有字段都插入一遍,只不过值都是 null。
这是因为 MyBatis-Plus 框架默认开启了全局的 insert 的非空字段策略,如果要在保存空数据时忽略这个策略,可以通过设置 insertStrategy 属性来实现,例如:
```java
// 关闭全局的 insert 的非空字段策略
mybatis-plus.global-config.insert-strategy = ignore
```
同时,在使用 LambdaQueryWrapper 进行数据操作时,也可以通过设置 selectStrategy 属性来控制查询时的策略,例如:
```java
// 使用查询时的策略
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.select(User::getName, User::getAge);
wrapper.selectStrategy(QueryStrategy.SELECT);
List<User> userList = userMapper.selectList(wrapper);
```
这样就可以实现在查询时忽略掉空数据的字段了。
阅读全文