springboot 集成mybatis-plus通用CRUD
CRUD
mybatis-plust提供了通用CRUD类 IService ,可以直接继承改接口并实现ServiceImpl既可以实现通用CURD
实现自定义的CURD基础类
根据研发规范,IService返回的数据结构是Entity类型,与规范要求的业务代码应该返回DTO不符,可以实现自定义基类来解决
创建并实现自定义基类
/*
* @Description:自定义CRUD基类
* @Author: donglietao@163.com
* @ENT: 实体类
* @DTO: DTO类
*/
public interface CrudService<ENT, DTO> {
List<DTO> list(@Param("ew") Wrapper<ENT> queryWrapper);
}
主要是用到了BaseMap<ENT>类型
/*
* @description: CrudServiceImpl
* @author: donglietao@163.com
* */
@Service
@Slf4j
public class CrudServiceImpl<ENT, DTO> implements CrudService<ENT, DTO> {
@Autowired
protected BaseMapper<ENT> baseMapper;
private Class<DTO> getDTOClass() {
return (Class<DTO>) ReflectionKit.getSuperClassGenericType(this.getClass(), CrudService.class, 1);
}
public List<DTO> list(@Param("ew") Wrapper<ENT> queryWrapper) {
List<ENT> list = baseMapper.selectList(queryWrapper);
List<DTO> listDTO = new ArrayList<>();
if (list != null) {
for (ENT ent : list) {
DTO dto = null;
try {
dto = getDTOClass().newInstance();
BeanUtils.copyProperties(ent, dto);
listDTO.add(dto);
} catch (Exception ex) {
log.error("CrudServiceImpl.list() error:", ex);
}
}
}
return listDTO;
}
}
实现自定义基类
public interface UserService extends CrudService<UserEntity, UserDTO> {
}
@Service
public class UserServiceImpl extends CrudServiceImpl<UserEntity, UserDTO> implements UserService {
}