跳转到主要内容

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 {

}