LambdaQueryWrapper 保存空数据
如果你使用的是 MyBatis-Plus 框架提供的 LambdaQueryWrapper 进行数据操作,那么当你使用它的 save 方法保存空数据时,实际上它会将所有字段都插入一遍,只不过值都是 null。
这是因为 MyBatis-Plus 框架默认开启了全局的 insert 的非空字段策略,如果要在保存空数据时忽略这个策略,可以通过设置 insertStrategy 属性来实现,例如:
// 关闭全局的 insert 的非空字段策略
mybatis-plus.global-config.insert-strategy = ignore
同时,在使用 LambdaQueryWrapper 进行数据操作时,也可以通过设置 selectStrategy 属性来控制查询时的策略,例如:
// 使用查询时的策略
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.select(User::getName, User::getAge);
wrapper.selectStrategy(QueryStrategy.SELECT);
List<User> userList = userMapper.selectList(wrapper);
这样就可以实现在查询时忽略掉空数据的字段了。
LambdaQueryWrapper保存
LambdaQueryWrapper是MyBatis Plus框架中的一个查询条件封装类,它提供了一种使用lambda表达式的方式来构建查询条件的方法。通过LambdaQueryWrapper,我们可以在查询中使用lambda表达式来指定查询的条件,例如eq方法用于指定相等条件。LambdaQueryWrapper可以与Page对象一起使用,实现分页查询。
LambdaQueryWrapper 保存null
在使用LambdaQueryWrapper进行数据操作时,如果要保存一个空值,可以使用null
或者""
(空字符串)。但是,需要注意的是,如果数据库定义该字段为非空字段,保存null
会导致保存失败。
一种解决方法是在实体类中对该字段进行注解,如使用@TableField(value = "field_name", insertStrategy = FieldStrategy.IGNORED)
,该注解中的insertStrategy
参数指定了插入时的策略,FieldStrategy.IGNORED
表示插入时忽略该字段。
另一种解决方法是在保存时手动判断该字段是否为null
,如果为null
则不进行保存,例如:
if (entity.getFieldName() != null) {
lambdaQueryWrapper.set(entity::getFieldName, entity.getFieldName());
}
这样可以避免保存null
导致的失败。
相关推荐















