MyBatis-Plus——代码生成器的使用
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
导入依赖
<dependency><groupId>com.baomidougroupId><artifactId>mybatis-plus-boot-starterartifactId><version>3.0.5version>dependency><dependency><groupId>org.apache.velocitygroupId><artifactId>velocity-engine-coreartifactId><version>2.0version>dependency><dependency><groupId>io.swaggergroupId><artifactId>swagger-annotationsartifactId><version>1.5.19version>dependency>
更详细的代码生成器配置请查看官方文档&#xff1a;https://baomidou.com/pages/061573/#superentityclass
表结构
当前项目结构
配置代码生成器
1、globalConfig 全局策略配置
outputDir
- 生成文件的输出目录
- 默认值&#xff1a;
D 盘根目录
fileOverride
open
enableCache
- 是否在 xml 中添加二级缓存配置
- 默认值&#xff1a;
false
开发人员
kotlin
- 开启 Kotlin 模式
- 默认值&#xff1a;
false
swagger2
- 开启 swagger2 模式
- 默认值&#xff1a;
false
activeRecord
- 开启 ActiveRecord 模式
- 默认值&#xff1a;
false
baseResultMap
- 开启 BaseResultMap
- 默认值&#xff1a;
false
baseColumnList
- 开启 baseColumnList
- 默认值&#xff1a;
false
dateType
- 时间类型对应策略
- 默认值&#xff1a;
TIME_PACK
entityName
- 实体命名方式
- 默认值&#xff1a;
null
例如&#xff1a;%sEntity
生成 UserEntity
mapperName
- mapper 命名方式
- 默认值&#xff1a;
null
例如&#xff1a;%sDao
生成 UserDao
xmlName
- Mapper xml 命名方式
- 默认值&#xff1a;
null
例如&#xff1a;%sDao
生成 UserDao.xml
serviceName
- service 命名方式
- 默认值&#xff1a;
null
例如&#xff1a;%sBusiness
生成 UserBusiness
serviceImplName
- service impl 命名方式
- 默认值&#xff1a;
null
例如&#xff1a;%sBusinessImpl
生成 UserBusinessImpl
controllerName
- controller 命名方式
- 默认值&#xff1a;
null
例如&#xff1a;%sAction
生成 UserAction
idType
- 指定生成的主键的 ID 类型
- 默认值&#xff1a;
null
2、dataSourceConfig 数据源配置
dbQuery
- 数据库信息查询类
- 默认由
dbType
类型决定选择对应数据库内置实现
实现 IDbQuery
接口自定义数据库查询 SQL 语句
定制化返回自己需要的内容
dbType
schemaName
- 数据库 schema name
- 例如
PostgreSQL
可指定为 public
typeConvert
- 类型转换
- 默认由
dbType
类型决定选择对应数据库内置实现
实现 ITypeConvert
接口自定义数据库 字段类型
转换为自己需要的 java
类型&#xff0c;内置转换类型无法满足可实现 IColumnType
接口自定义
url
driverName
username
password
package com.haoming;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.util.ArrayList;public class ChengCode {public static void main(String[] args) {AutoGenerator mpg &#61; new AutoGenerator();GlobalConfig gc &#61; new GlobalConfig();String projectPath &#61; System.getProperty("user.dir");gc.setOutputDir(projectPath &#43; "/src/main/java");gc.setAuthor("鼠皓明");gc.setOpen(false);gc.setFileOverride(false);gc.setServiceName("%sService");gc.setIdType(IdType.ID_WORKER);gc.setDateType(DateType.TIME_PACK);gc.setSwagger2(true);mpg.setGlobalConfig(gc);DataSourceConfig dsc &#61; new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSl&#61;false&useUnicode&#61;true&characterEncoding&#61;utf-8&serverTimezone&#61;UTC");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");dsc.setDbType(DbType.MYSQL);mpg.setDataSource(dsc);PackageConfig pc &#61; new PackageConfig();pc.setModuleName("blog");pc.setParent("com.cheng");pc.setEntity("pojo");pc.setMapper("mapper");pc.setService("service");pc.setController("controller");mpg.setPackageInfo(pc);StrategyConfig sy &#61; new StrategyConfig();sy.setInclude("user");sy.setNaming(NamingStrategy.underline_to_camel);sy.setColumnNaming(NamingStrategy.underline_to_camel);sy.setEntityLombokModel(true);sy.setLogicDeleteFieldName("deleted");sy.setVersionFieldName("version");sy.setRestControllerStyle(true);sy.setControllerMappingHyphenStyle(true);TableFill create_time &#61; new TableFill("create_time", FieldFill.INSERT);TableFill update_time &#61; new TableFill("update_time", FieldFill.INSERT_UPDATE);ArrayList<TableFill> tableFills &#61; new ArrayList<>();tableFills.add(create_time);tableFills.add(update_time);mpg.setStrategy(sy);mpg.execute();}
}
执行代码生成器&#xff0c;查看项目结构的变化
代码生成器执行成功&#xff0c;自动生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码。