# HY-generator **Repository Path**: luanhaoyu/crud-generator ## Basic Information - **Project Name**: HY-generator - **Description**: HY增删改查代码生成工具,快速生成crud应用,支持自定义模板扩展 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/luanhaoyu/crud-generator - **GVP Project**: No ## Statistics - **Stars**: 48 - **Forks**: 18 - **Created**: 2018-01-06 - **Last Updated**: 2025-04-15 ## Categories & Tags **Categories**: code-generator **Tags**: None ## README # **HY crud-generator** 基于springBoot的代码生成工具,适合后台管理应用的基本增删该查代码的生成,简单配置即可搞定一个单页增删改查应用! 3.0.1版本已升级到springboot2 持久层更换为mybatis-plus,前端支持iview和element-ui两套模板,支持模板的扩展。 ### 使用技术 1. springBoot 2. springMvc 3. swagger-ui 4. freemarker 5. mybatis-plus 7. javaparser 8. 前端框架 vue element-ui iview ### 可生成以下代码 - html页面(默认 可扩展为jsp,vue组件,纯html或其他视图文件) - js脚本 - Controller.java后端控制层 - Service.java 后端服务层 - Mapper.java 后端dao层 - mapper.xml 后端dao层xml - model.java模型文件 ### 模块说明 ![image-20210618151438505](README.assets/image-20210618151438505.png) ### 使用步骤 #### 以下以生成E:\git-new-res\crud-generator\curd-example 简单springboot应用为例 ##### 1.[clone项目到本地][1] ##### 2.连接mysql 数据库创建测试数据库 执行 crud-example\db.sql 即可创建数据库用户以及初始化测试脚本 ##### 3. 控制台进入crud-generator项目目录,安装相关依赖 > cd e:\git-new-res\crud-generator > > mvn clean install ##### 4.切换到curd-gen项目,生成web层和前端代码 或 main函数执行crud-gen下Application > cd e:\git-new-res\crud-generator\crud-gen > > mvn spring-boot:run ###### 生成的文件目录如下: 后端: ![输入图片说明](https://gitee.com/uploads/images/2018/0325/185156_ccb73c2e_1009390.png "屏幕截图.png") 前端: vue项目前端只生成 vue文件,并且自动在router.js 中增加路由配置: `{path: '/user', component: () => import('../view/user/user.vue')},` resource.js中增加接口配置: `export const User = resource('/user', http, {})` ##### 6. 所有代码生成完毕,启动crud-example项目进行测试 或 main函数执行crud-example下Application > cd e:\git-new-res\crud-generator\crud-example > > mvn spring-boot:run ##### 7.查看后端swagger-ui接口 浏览器输入 http://127.0.0.1:8080/swagger-ui/index.html#/user-controller 已生成常用增加改查接口 ![image-20210618153356915](README.assets/image-20210618153356915.png) ##### 8.预览前端页面功能 浏览器输入 [http://127.0.0.1:8080/index.html#/user][http://127.0.0.1:8080/index.html#/user] ![image-20210618153554099](README.assets/image-20210618153554099.png) ![image-20210618153608138](README.assets/image-20210618153608138.png) 示例前端已经打包好,可直接预览。 如果是模板是默认element-ui,需要重新生成的话在代码生成后自行在目录: e:\git-new-res\crud-generator\crud-example\vue-dev 下执行npm run serve 和npm run build命令 #### 生成器配置 application.yml crud-gen模块下application.yml 通过简洁的yml语法即可配置生成代码的相关属性 示例如下: ``` crud-gen: global-config: project: java-project-path: e:\git-new-res\crud-generator\crud-example #生成的工程路径 view-project-path: ${crud-gen.global-config.project.java-project-path}/src/main/vue-dev #视图生成的工程路径 template-path: /templates/element-ui #模板路径 默认为当前项目 resources/templates/element-ui 目录下 controller-enabled: true #是否生成controller service-enabled: false #是否生成service服务 view-enabled: true #是否生成视图 默认 element-ui js-enabled: false #是否生成js 前后端分离项目无需配置 mapper-xml-enabled: false #是否生成mapper.xml文件 mapper-enabled: true #是否生成mapper.java文件 package-name: com.lhy.example # data-base-config: # mysql不需要 oracle需要 # schema: data_center model-attributes: - table-name: t_user #表名 entity-name: User #model名称 支持配置多张表 参考yml数组配置 可以不填 不填则根据表名进行驼峰转化 module-name: user extend-attr-map: #自定义扩展属性 attr1: key1 java-attributes: controller-request-mapping: user #controller requestMapping路径 query-order-sql: updated desc #排序字段,格式为sql中order by 后的内容 view-attributes: view-path: src/view/user/ #html等视图文件相对路径 column-attr-map: #列属性 #类扩展配置 不是必须,不设置也能正常生成 id: index: 1 #顺序号 nullable: false #是否可空 默认可空 queryable: false #是否作为查询条件 默认否 uniqueable: false #是否唯一性校验 默认否 alias: 用户ID #列别名 页面显示字段名称 为空默认为数据库字段注释 grid-showable: false #表格是否显示 默认显示 form-showable: false #编辑表单是否显示 默认显示 type: #数据展示类型 text combobox datebox等 前端框架实现不同 这里预留 extend-attr-map: #列扩展属性 map可自定义 custom-attr: 2018 name: index: 2 #顺序号 nullable: false #是否可空 默认可空 queryable: true #是否作为查询条件 默认否 uniqueable: true #是否唯一性校验 alias: 用户姓名 #列别名 页面显示字段名称 为空默认为数据库字段注释 grid-showable: true #表格是否显示 默认显示 pass: grid-showable: false phone: index: 3 status: index: 4 nullable: false queryable: true created: form-showable: false updated: form-showable: false ``` #### 配置自定义模型参数和列参数 `crudgen.model-attributes.extend-attr-map` --配置模型自定义属性 `crudgen.model-attributes. column-attr-map.列名.extend-attr-map` --#列扩展属性 ![配置自定义模型参数和列参数](https://gitee.com/uploads/images/2018/0106/232651_8efacc5f_1009390.png "配置自定义模型参数和列参数.png") ##### 增量WebMvcConfigurerAdapter配置 如果前后端未分离需要设置controller和view对应关系 传统方式是采用@Controller注解映射 例如: ![输入图片说明](https://gitee.com/uploads/images/2018/0325/190955_a616b290_1009390.png "屏幕截图.png") 本项目服务端全部使用@RestController接口,不映射视图 将映射模块作为一个扩展功能,根据模型增量生成视图和view映射关系 ![输入图片说明](https://gitee.com/uploads/images/2018/0325/191111_b42c3188_1009390.png "屏幕截图.png") 参考curd-gen模块下: ``` CustomWebConfigGenerator.java ``` ##### 自定义模板文件生成器 继承对应的abstractXXGenerator ![输入图片说明](https://gitee.com/uploads/images/2018/0325/191423_27effcb3_1009390.png "屏幕截图.png") 并添加@Component注解即可替换默认的模板文件生成器 默认的后端生成器为springmvc+mybatis+mybatis-plus方式 默认的前端为element-ui 方式 ### 统一增删改查控制器单独引用 crud-mvc以下模块可单独引入 为基于springmvc,mybatis-plus封装的一个通用controller和service接口,基于restful-api和泛型设计 继承 SimpleCrudControllerSupport 即可包含常用增删改查接口功能 ![image-20210618154136884](README.assets/image-20210618154136884.png) 默认controller包含所有增删改查接口,如只想使用部分接口,可以将WebMvcConfiguration.java以下代码注释,同时覆盖对应父类方法标记@SimpleMapping注解即可 ![image-20210618154507760](README.assets/image-20210618154507760.png) ![image-20210618154645231](README.assets/image-20210618154645231.png) ### 愿景 1. [ X ]可视化页面配置 2. [ √ ]vue模板实现 3. [ √ ]步骤整合,简化流程 4. [ √ ] controller 暴露接口可选择性配置 5. [ √ ]bug修复 表缺失主键时生成报错 6. [ X ]根据字段不同类型生成不同的表单组件 input checkbox select等 这个工具功能并不是很完善,主要是说明下设计过程中使用到的一些较为适用的设计思想和模式 例如:封装变化,单一职责,多组合少继承,对修改关闭对扩展开放等等。。。 欢迎大家交流学习。 更新日志 3.1.0-SNAPSHOT 1.通用查询方法支持条件构造 2,由于springfox3.0.0 会覆盖自定义的objectmapper,导致,localdatetime字段序列化格式失效,因此启用spring-fox改用springdoc-open-api