背景
配置代码生成器生成出controller、service、mapper,虽然大部分开源框架service与mapper都生成好了,但是controller中还遗留冗余代码,我的想法是能不能把基本的单表CRUD抽出来,提供一个公共的Controller控制器。
利用java语言的特性可以实现,也会存在一些问题。
实现思路
- 创建父控制器BaseController
- 一个Model(表实体Model)对应一个service,service作为泛型为BaseController的属性
- 通过注入的方式注入service属性(表不可能重复,因此service不存在重复注入Spring容器)
- 提取增删改查Mapping
service接口需要提供通用增删改查接口,对持久层框架没有限制
具体步骤
我是用的是mybatis-plus框架,service泛型需要继承自IService接口,这个接口是MybatisPlus提供的公共service层接口,基本的增删改查方法接口已经提供好了,需要传递一个Model泛型
public abstract class BaseController<S extends IService<M>, M> {
@Autowired
protected S service;
}
接着提取出公共的增删改查Mapping
public abstract class BaseController<S extends IService<M>, M extends BaseModel> {
@Autowired
protected S service;
@ResponseBody
@GetMapping("/baseQueryById/{id}")
@ApiOperation(value = "基础功能-通过ID查询单条记录", notes = "基础功能-通过ID查询单条记录", httpMethod = "GET", response = Result.class)
@ApiOperationSupport(order = 1)
protected Result baseQueryById(@PathVariable("id") Long id) {
if (ObjectUtil.isNull(id) || id <= 0L) {
return Result.fail("id不能为空!");
}
M m = service.getById(id);
return Result.

最低0.47元/天 解锁文章
3101

被折叠的 条评论
为什么被折叠?



