lambdaUpdate().eq(Entity::getId, value).update(entity);
时间: 2024-05-20 11:14:39 浏览: 153
这段代码使用 LambdaUpdate 对实体进行更新操作。LambdaUpdate 是 Mybatis-Plus 提供的一个更新器,用于构建更加简洁、易读的更新操作。其中,Entity::getId 表示获取实体的 id 属性作为更新条件,value 是更新条件的具体值;update(entity) 则表示将指定的实体 entity 作为更新的内容进行更新操作。具体的实现方式会根据 Mybatis-Plus 的配置和数据库类型而有所不同。
相关问题
LambdaUpdateWrapper<T> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();lambdaUpdateWrapper.eq(T::getColumnName, value); // 设置更新条件// 设置需要更新的属性值int rows = baseMapper.update(entity, lambdaUpdateWrapper); // 执行更新操作 entity如果有属性值为空的,会执行更行吗
如果 LambdaUpdateWrapper 中设置了更新条件,但实体对象中对应的属性值为 null,那么 MyBatis-Plus 会将该属性更新为 null。如果要避免更新为 null,可以在更新前进行非空判断,只对非空属性进行更新。例如:
```
T entity = new T();
entity.setId(id); // 设置实体对象的 ID
// 设置其他需要更新的属性值
if (entity.getProperty() != null) {
LambdaUpdateWrapper<T> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(T::getId, id); // 设置更新条件
lambdaUpdateWrapper.set(T::getProperty, entity.getProperty()); // 设置需要更新的属性值
int rows = baseMapper.update(entity, lambdaUpdateWrapper); // 执行更新操作
}
```
在这个例子中,如果实体对象的 property 属性值为 null,那么不会执行更新操作。只有当 property 不为 null 时,才会进行更新操作。
解释@Service @RequiredArgsConstructor public class FormDataService extends ServiceImpl<FormDataMapper, FormData> { // private final CacheUtils cacheUtils; public void saveFormResult(FormData entity, Long userId) { // String formKey = entity.getFormKey(); // entity.setSerialNumber(cacheUtils.incr(StrUtil.format(FORM_RESULT_NUMBER, formKey), CommonConstants.ConstantNumber.ONE)); entity.setUserId(userId); entity.setSubmitAddress(AddressUtils.getRealAddressByIP(entity.getSubmitRequestIp())); this.save(entity); } public FormDataTableVO listFormDataTable(QueryFormResultRequest request) { List<FormData> dataEntityList; Long total; // 查询全部 if (0 == request.getCurrent()) { dataEntityList = this.list(Wrappers.<FormData>lambdaQuery().eq(FormData::getFormKey, request.getFormKey())); total = Long.valueOf(dataEntityList.size()); } else { Page<FormData> page = this.page(request.toMybatisPage(), Wrappers.<FormData>lambdaQuery().eq(FormData::getFormKey, request.getFormKey())); dataEntityList = page.getRecords(); total = page.getTotal(); } List<Map> list = dataEntityList.stream().map(item -> { Map<String, Object> originalData = item.getOriginalData(); item.setOriginalData(null); // originalData.put(BaseEntity.Fields.createTime, LocalDateTimeUtil.formatNormal(item.getCreateTime())); // originalData.put(BaseEntity.Fields.updateTime, LocalDateTimeUtil.formatNormal(item.getUpdateTime())); originalData.put(FormData.Fields.createTime, LocalDateTimeUtil.formatNormal(item.getCreateTime())); originalData.put(FormData.Fields.updateTime, LocalDateTimeUtil.formatNormal(item.getUpdateTime())); Map<String, Object> formDataMap = BeanUtil.beanToMap(item); formDataMap.putAll(originalData); return formDataMap; }).collect(Collectors.toList()); return new FormDataTableVO(list, total); } public Boolean deleteByIds(List<String> dataIdList, String formKey) { baseMapper.deleteBatchIds(dataIdList); return null; } public Boolean updateFormResult(FormData formData) { FormData data = this.getById(formData.getId()); data.setOriginalData(formData.getOriginalData()); return this.updateById(data); } }
这段代码是一个Java类,名为FormDataService。它使用了@Service注解来标记该类是一个服务类,并且继承了ServiceImpl<FormDataMapper, FormData>类。其中FormDataMapper是一个数据访问对象(DAO),FormData是一个实体类。
FormDataService类中定义了四个方法,分别是saveFormResult、listFormDataTable、deleteByIds和updateFormResult。
saveFormResult方法接收两个参数,一个是FormData类型的实体对象entity,另一个是Long类型的userId。该方法通过设置entity的属性值,然后调用save方法将entity保存到数据库中。
listFormDataTable方法接收一个QueryFormResultRequest类型的参数request,用于查询FormData数据列表。该方法通过判断request对象的current属性是否为0,来确定是查询全部数据,还是查询分页数据。然后使用lambdaQuery方法创建查询条件,查询符合条件的数据,并将其转换为一个List<Map>类型的对象返回。
deleteByIds方法接收两个参数,一个是List<String>类型的dataIdList,另一个是String类型的formKey。该方法通过调用baseMapper的deleteBatchIds方法,删除符合条件的数据。
updateFormResult方法接收一个FormData类型的参数formData,用于更新FormData数据。该方法通过调用getById方法获取到原始数据,然后将formData中的属性值复制到原始数据中,并调用updateById方法将更新后的数据保存到数据库中。
阅读全文