@Mapper(componentModel = "spring"注解 常用在接口层 用来编译时自动实现接口的实现类
常用于类型的转换,比如下面的实战中 需要将一个DTO转换成实体类
public boolean saveDTOBatch(List<DeviceBaseEnvironmentalMonitorDTO> rows) {
return saveBatch(deviceBaseEnvironmentalMonitorParamMapper.dtoList2Entity(rows));
}
saveBatch()函数接受一个Collection<T> entityList 实体类
所以我们编写
DeviceBaseEnvironmentalMonitorParamMapper
@Mapper(componentModel = "spring",imports = {BaseEntity.class})
public interface DeviceBaseEnvironmentalMonitorParamMapper{
/**
* dto集合转entity集合
* @param rows
* @return
*/
List<DeviceBaseEnvironmentalMonitor> dtoList2Entity(List<DeviceBaseEnvironmentalMonitorDTO> rows);
}
只需要写接口,自动实现
@Transactional 事务注解
建议在具体的类上使用 @Transactional 注解
以下是一个应用事务实现导入功能的实战
@SuppressWarnings("unchecked") @Override @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) public boolean importData(List<DeviceBaseEnvironmentalMonitorDTO> rows) { int index = 2; for(DeviceBaseEnvironmentalMonitorDTO d:rows){ String indexName = "第" + index + "行"; if (StringUtils.isBlank(d.getSupplier())) { AssertUtil.fail(indexName + "供应商不能为空!"); } if (StringUtils.isBlank(d.getSpecificationModel())) { AssertUtil.fail(indexName + "规格型号不能为空!"); } index++; LambdaQueryWrapper<DeviceBaseEnvironmentalMonitor> wrapper = Wrappers.<DeviceBaseEnvironmentalMonitor>lambdaQuery(); wrapper.eq(DeviceBaseEnvironmentalMonitor::getSupplier,d.getSupplier()); wrapper.eq(DeviceBaseEnvironmentalMonitor::getSpecificationModel, d.getSpecificationModel()); deviceBaseEnvironmentalMonitorMapper.delete(wrapper); } return saveDTOBatch(rows); } }