# extend-controller-boot-starter **Repository Path**: hddara/extend-controller-boot-starter ## Basic Information - **Project Name**: extend-controller-boot-starter - **Description**: 针对于spring boot 2 实现 Controller 插件式扩展。 1、可以实现自定义全局接口注入; 2、可以通过Entity直接生成接口(不用写Controller、Service、Mapper等层级实现一键直达数据库) - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-14 - **Last Updated**: 2024-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Spring的Controller插件式扩展 ## 项目简介 - 本项目创建目的:为了方便扩展通用接口,如分页、列表、详情、删除、下载等公共接口。 ### 注意事项: - 有效版本从 1.0.1 开始(1.0.0有历史遗留问题) - 如果需要使用内置的 CRUD插件 进行数据库查询,则需要依赖MybatisPlus,且需要实现Mapper才能被识别 ## 使用方法 ### 引入依赖 注:最新版本[查看Maven Central](https://central.sonatype.com/artifact/io.gitee.hddara/extend-controller-boot-starter) ```xml io.gitee.hddara extend-controller-boot-starter 1.0.1 ``` ### 插件配置 注:如开启内置CRUD插件,详见[CrudControllerPlugin.java](src%2Fmain%2Fjava%2Fcn%2Fhddara%2Fextend%2Fcontroller%2Fplugins%2FCrudControllerPlugin.java) 内置CRUD插件依赖与MybatisPlus ```java @Configuration public class ExtendApiConfig { @Bean public ExtendPluginConfig myExtendPluginConfig() { return ExtendPluginConfig.defaultConfig() .enableDefaultCrudPlugin(true) // 开启内置的 CRUD 插件,详情见 .addPlugins(new ExampleControllerPlugin()); // 添加示例插件 } } ``` ### 开启使用 #### 1、在Controller中使用 ```java @RestController @RequestMapping({"/demo"}) @WebExtendApi(entityType = Demo.class) // 可忽略RequestMapping 配置,默认取@RequestMapping注解值 public class RuleDamageController { // 两种特殊情况 // 当存在与插件相同的函数名称和参数结构时,以当前为准 @ResponseBody @GetMapping("page") public ResponseEntity page(HttpServletRequest request, @EntityType Class entityType) { Map paramMap = RequestUtils.getRequestParam(request); String current = String.valueOf(paramMap.getOrDefault("current", "1")); String size = String.valueOf(paramMap.getOrDefault("size", "10")); Page page = Page.of(Long.parseLong(current), Long.parseLong(size)); QueryWrapper wrapper = RequestUtils.toQueryWrapper(paramMap, entityType); return new ResponseEntity<>(Db.page(page, wrapper), HttpStatus.OK); } // 当与插件配置的RequestMapping冲突时,会以当前为准 @GetMapping("page1") public ResponseEntity page1(HttpServletRequest request, @EntityType Class entityType) { Map paramMap = RequestUtils.getRequestParam(request); String current = String.valueOf(paramMap.getOrDefault("current", "1")); String size = String.valueOf(paramMap.getOrDefault("size", "10")); Page page = Page.of(Long.parseLong(current), Long.parseLong(size)); QueryWrapper wrapper = RequestUtils.toQueryWrapper(paramMap, entityType); return new ResponseEntity<>(Db.page(page, wrapper), HttpStatus.OK); } } ``` #### 2、在Entity中使用 ```java @TableName("t_demo") @WebExtendApi(requestMapping = "/demo1") // 可忽略EntityType 配置,默认取当前类 public class Demo extends BaseEntity { @TableId(type = IdType.AUTO) private Integer id; @FieldQuery(QueryType.LIKE) private String name; // 城市编码 private String cityCode; } ``` > 依赖于MybatisPlus扫描的TableInfos, 并需要定义Mapper ## 联系方式 Wechat: HDdara