IDEA+MybatisPlus实战:5分钟搞定Controller模板配置(附完整代码)
IDEAMybatisPlus实战5分钟高效构建Controller模板全攻略在Java企业级开发中Controller层的重复代码编写往往消耗开发者大量时间。以用户管理模块为例每个实体类对应的Controller通常包含近乎相同的增删改查方法。本文将展示如何利用IDEA的Velocity模板引擎与MybatisPlus框架实现一键生成标准化Controller代码将原本需要15分钟的手动编码缩短至5秒内完成。1. 环境准备与工具链配置1.1 必备组件检查清单IDEA 2022.3需支持最新Velocity语法MybatisPlus 3.5.0包含MybatisX插件Lombok简化实体类注解Spring Web提供RestController支持提示建议使用MybatisX-Generator预先生成Entity和Service层代码确保命名规范统一1.2 项目结构示例标准Maven项目应具备以下包结构src/main/java ├── com.example │ ├── entity # MybatisX生成的实体类 │ ├── service # 自动生成的Service接口及实现 │ ├── controller # 目标生成位置 │ └── util # 包含R工具类2. 核心模板配置详解2.1 模板变量解析Velocity模板通过动态变量实现智能生成关键变量包括变量名作用示例值${PACKAGE_NAME}当前包路径com.example.controller${NAME}输入的类名UserInfoController${EntityName}提取的实体名去Controller后缀UserInfo${entityName}首字母小写的实体名userInfo2.2 完整模板代码实现打开IDEA设置File → Settings → Editor → File and Code Templates新建名为MybatisPlusController的模板#set($EntityName $NAME.replaceAll(Controller, )) #set($entityName $EntityName.substring(0,1).toLowerCase() $EntityName.substring(1)) #set($PARENT_PACKAGE $PACKAGE_NAME.replace(.controller, )) package ${PACKAGE_NAME}; import ${PARENT_PACKAGE}.entity.${EntityName}Entity; import ${PARENT_PACKAGE}.service.${EntityName}Service; import ${PARENT_PACKAGE}.util.R; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Date; Slf4j RestController RequestMapping(/${entityName}) public class ${NAME} { Resource private ${EntityName}Service ${entityName}Service; PostMapping public R? create(RequestBody ${EntityName}Entity entity) { boolean success ${entityName}Service.save(entity); return success ? R.ok() : R.error(创建失败); } GetMapping(/{id}) public R${EntityName}Entity getById(PathVariable Long id) { return R.ok().data(${entityName}Service.getById(id)); } PutMapping public R? update(RequestBody ${EntityName}Entity entity) { entity.setUpdateTime(new Date()); return ${entityName}Service.updateById(entity) ? R.ok() : R.error(更新失败); } DeleteMapping(/{id}) public R? delete(PathVariable Long id) { return ${entityName}Service.removeById(id) ? R.ok() : R.error(删除失败); } GetMapping(/page) public RPage${EntityName}Entity pageQuery( RequestParam(defaultValue 1) int current, RequestParam(defaultValue 10) int size) { return R.ok().data(${entityName}Service.page(new Page(current, size))); } }3. 增强型R工具类优化在util包下创建增强版的响应工具类支持链式调用和泛型Data Accessors(chain true) public class RT { private int code 200; private String msg success; private T data; private long timestamp System.currentTimeMillis(); public static T RT ok() { return new R(); } public static T RT ok(T data) { return new RT().setData(data); } public static T RT error(String msg) { return new RT().setCode(500).setMsg(msg); } // 添加业务状态码支持 public static T RT of(int code, String msg, T data) { return new RT().setCode(code).setMsg(msg).setData(data); } }4. 实战应用技巧4.1 模板使用流程在controller包右键 → New → Java Class输入类名如ProductController选择MybatisPlusController模板自动生成包含完整CRUD方法的Controller4.2 高级定制方案方法扩展在模板中添加GetMapping(/list)查询所有数据的方法权限控制集成Sa-Token注解SaCheckPermission(${entityName}:query) GetMapping(/{id})参数校验增加Hibernate Validator支持public R? create(Valid RequestBody ${EntityName}Entity entity)4.3 异常处理建议创建全局异常处理器增强健壮性RestControllerAdvice public class GlobalExceptionHandler { ExceptionHandler(Exception.class) public RString handleException(Exception e) { log.error(e.getMessage(), e); return R.error(e.getMessage()); } }5. 效能对比与优化成果传统手动编码与模板生成对比指标手动编码模板生成创建时间10-15分钟5秒代码一致性依赖开发习惯100%统一方法完整性易遗漏部分方法标准CRUD全覆盖维护成本每个类单独修改修改模板全局生效实际项目中使用该模板为20个实体类生成Controller代码累计节省开发时间约5小时且显著降低了因手动编码导致的接口规范不一致问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2434241.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!