# code-mbg-plus **Repository Path**: LevinLee/code-mbg-plus ## Basic Information - **Project Name**: code-mbg-plus - **Description**: 基于mybatis generator + velocity的代码生成器 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-03-22 - **Last Updated**: 2021-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 基于mybatis generator + velocity的代码生成器。通过自定义模板,来定制自己需要的代码。 ## 自定义插件 - MapperOverIgnorePlugin - xml文件存在时,不合并xml文件 - MapperPlugin - 删除xml文件指定方法,如: 项目集成了myabtis-plus,则xml文件不需要生成crud方法,该插件可将xml文件的所有crud方法都删除 - ExamplePlugin - 不生成example类 - LombokPlugin - 实体类添加lombok注解 - VelocityPlugin - 根据模板文件,为每个bean生成对应的文件,如: 对应的mvc - resources/velocity目录下有模板示例 ## 自定义功能 ### 扫描schema下的所有表 默认扫描schema下的所有表,生成对应的mvc文件。也可通过其他配置参数来决定扫描表的策略。 ```properties ## 生成指定表 scan.table.include=t_user,t_role ## 不生成指定表 scan.table.exclude=t_user ``` 同时配置scan.table.include和scan.table.exclude时只有scan.table.include会生效。 ### 表名特殊处理 ```properties ## 去除表前缀 scan.table.prefix.remove=t_ ## 去除表后缀, \\_\\d*$ (t_user_16 => t_user) scan.table.suffix.remove.regex=\\_\\d*$ ``` ### 配置mapper.xml生成指定元素 ``` ## BaseResultMap,Example_Where_Clause,Update_By_Example_Where_Clause,Base_Column_List,selectByExample,selectByPrimaryKey,deleteByPrimaryKey,deleteByExample,insert,insertSelective,countByExample,updateByExampleSelective,updateByExample,updateByPrimaryKeySelective,updateByPrimaryKey target.mapperXml.element.include=BaseResultMap,Base_Column_List ``` ### 生成字段备注 所有的domain类或模板都可生成备注信息,如: ```java /** * 消息 */ private String message; /** * 消息状态: 0 => 未投递, 1 => 投递成功 */ private Integer messageStatus; /** * 用户ID */ private Integer userId; ``` ### 添加作者信息 ```properties comment.author=demo ``` ### XML文件格式 xml文件缩进由2个空格改为4个空格 ### 自动创建目录 目标路径的父目录不存在时,会自动创建目录 ## 启动参数文件模板 ```properties jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mall_activity?useUnicode=true&characterEncoding=UTF-8 # jdbc.url=jdbc:mysql://localhost:3306/shard_mall_activity_0?useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=123456 ## 生成指定表 scan.table.include= ## 不生成指定表 scan.table.exclude= ## 去除表前缀 scan.table.prefix.remove=t_ ## 去除表后缀, \\_\\d*$ (t_user_16 => t_user) scan.table.suffix.remove.regex=\\_\\d*$ ## 生成文件,文件存在时处理策略: ignore-忽略 override-覆盖 target.file.exist.strategy=ignore ## 生成项目home路径 target.project.home=E:/workspace/mall-marketing ## 生成项目名称 target.project.name=mall-marketing-persistence ## 生成项目路径 target.project.path=${target.project.home}/${target.project.name} ## 生成项目java文件路径 target.project.path.java=${target.project.path}/src/main/java ## 生成项目资源文件路径 target.project.path.resources=${target.project.path}/src/main/resources ## 生成项目测试文件路径 target.project.path.test=${target.project.path}/src/test/java ## 项目基础包名 target.project.package.base=com.lfx.mall.marketing.persistence ## 生成domain包名 target.project.package.model=${target.project.package.base}.entity ## 生成mapper包名 target.project.package.mapper=${target.project.package.base}.dao ## xml生成路径 target.mapperXml.path=${target.project.path.resources}/mapper ## 生成xml文件可包含元素 ## BaseResultMap,Example_Where_Clause,Update_By_Example_Where_Clause,Base_Column_List,selectByExample,selectByPrimaryKey,deleteByPrimaryKey,deleteByExample,insert,insertSelective,countByExample,updateByExampleSelective,updateByExample,updateByPrimaryKeySelective,updateByPrimaryKey target.mapperXml.element.include=BaseResultMap,Base_Column_List ## 作者信息备注 comment.author=idler41 ## 启用自定义插件 plugin.example.enable=true plugin.lombok.enable=true plugin.mapper.enable=true plugin.mapper-ignore.enable=true plugin.template.enable=true ## 模板路径 plugin.template.home=D:/mbg/mall-groupshopping/velocity # 模板插件约定配置: plugin.template.模板文件名(不包含后缀).模板自定义属性(模板引擎可访问) ## manager.java模板 plugin.template.manager.enable=true plugin.template.manager.package=${target.project.package.base}.manager ## mapper.java模板 plugin.template.mapper.enable=true plugin.template.mapper.package=${target.project.package.mapper} ## model.java模板 plugin.template.model.enable=true plugin.template.model.package=${target.project.package.model} ## controller.java模板 plugin.template.controller.enable=true plugin.template.controller.package=${target.project.package.base}.controller ## po.java模板 plugin.template.po.enable=true plugin.template.po.package=${target.project.package.base}.controller.po plugin.template.po.field.exclude=createTime,updateTime ## vo.java模板 plugin.template.vo.enable=true plugin.template.vo.package=${target.project.package.base}.controller.vo plugin.template.vo.field.exclude=updateTime ## convert.java模板 plugin.template.converter.enable=true plugin.template.converter.package=${target.project.package.base}.converter ## managerTest.java模板 plugin.template.managerTest.enable=true plugin.template.managerTest.package=${plugin.template.manager.package} ``` ## 执行命令 拷贝并修改配置文件init.properties ```shell ## 打jar包 > mvn clean assembly:assembly -Dmaven.test.skip ## windows 执行 > java -Dinit.path=D:\init.properties -jar mbg-plus-jar-with-dependencies.jar ## linux 执行 > java -Dinit.path=/Users/apple/mywork/mbg-file/init.properties -jar mbg-plus-jar-with-dependencies.jar ``` ## 模板详解 ### 添加新模板步骤 1. 在配置属性plugin.template.home的路径下添加模板文件 2. 添加模板参数配置(假如该模板文件名称为xx.java) 1. 启用该插件: plugin.template.xx.enable=true 2. 模板生成到指定package: plugin.template.xx.package= ### 特殊模板: model.java 1. 在template.home的路径下添加名称为model.java的模板文件 2. 配置参数: ```properties plugin.template.model.enable=true ``` 该模板启用后,mbg不会为每个表生成domain文件,而是改为模板插件生成domain文件。 如果关闭,则mbg会为每个表生成domain文件。 模板插件方式生成domain文件相比mbg优点: 自由度更高,可以在不更改代码的情况下,随时更改模板 ## TODO 1. 添加junit模板文件,并在指定路径生成,提高项目的测试覆盖率