MyBatis-Plus——代码生成器的使用

简介: MyBatis-Plus——代码生成器的使用

MyBatis-Plus——代码生成器的使用

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

导入依赖

       <dependency>

           <groupId>com.baomidou</groupId>

           <artifactId>mybatis-plus-boot-starter</artifactId>

           <version>3.0.5</version>

       </dependency>

       <dependency>

           <groupId>org.apache.velocity</groupId>

           <artifactId>velocity-engine-core</artifactId>

           <version>2.0</version>

       </dependency>

       <dependency>

           <groupId>io.swagger</groupId>

           <artifactId>swagger-annotations</artifactId>

           <version>1.5.19</version>

       </dependency>

更详细的代码生成器配置请查看官方文档:https://baomidou.com/pages/061573/#superentityclass

表结构

QQ截图20211227105510.png

当前项目结构

QQ截图20211227145624.png

配置代码生成器

1、globalConfig 全局策略配置

outputDir

  • 生成文件的输出目录
  • 默认值:D 盘根目录

fileOverride

  • 是否覆盖已有文件
  • 默认值:false

open

  • 是否打开输出目录
  • 默认值:true

enableCache

  • 是否在 xml 中添加二级缓存配置
  • 默认值:false

开发人员

  • 默认值:null

kotlin

  • 开启 Kotlin 模式
  • 默认值:false

swagger2

  • 开启 swagger2 模式
  • 默认值:false

activeRecord

  • 开启 ActiveRecord 模式
  • 默认值:false

baseResultMap

  • 开启 BaseResultMap
  • 默认值:false

baseColumnList

  • 开启 baseColumnList
  • 默认值:false

dateType

  • 时间类型对应策略
  • 默认值:TIME_PACK

entityName

  • 实体命名方式
  • 默认值:null 例如:%sEntity 生成 UserEntity

mapperName

  • mapper 命名方式
  • 默认值:null 例如:%sDao 生成 UserDao

xmlName

  • Mapper xml 命名方式
  • 默认值:null 例如:%sDao 生成 UserDao.xml

serviceName

  • service 命名方式
  • 默认值:null 例如:%sBusiness 生成 UserBusiness

serviceImplName

  • service impl 命名方式
  • 默认值:null 例如:%sBusinessImpl 生成 UserBusinessImpl

controllerName

  • controller 命名方式
  • 默认值:null 例如:%sAction 生成 UserAction

idType

  • 指定生成的主键的 ID 类型
  • 默认值:null

2、dataSourceConfig 数据源配置

dbQuery

  • 数据库信息查询类
  • 默认由 dbType 类型决定选择对应数据库内置实现

   实现 IDbQuery 接口自定义数据库查询 SQL 语句 定制化返回自己需要的内容

dbType

  • 数据库类型
  • 该类内置了常用的数据库类型【必须】

schemaName

  • 数据库 schema name
  • 例如 PostgreSQL 可指定为 public

typeConvert

  • 类型转换
  • 默认由 dbType 类型决定选择对应数据库内置实现

    实现 ITypeConvert 接口自定义数据库 字段类型 转换为自己需要的 java 类型,内置转换类型无法满足可实现 IColumnType 接口自定义

url

  • 驱动连接的 URL

driverName

  • 驱动名称

username

  • 数据库连接用户名

password

  • 数据库连接密码

packagecom.haoming;

 

importcom.baomidou.mybatisplus.annotation.DbType;

importcom.baomidou.mybatisplus.annotation.FieldFill;

importcom.baomidou.mybatisplus.annotation.IdType;

importcom.baomidou.mybatisplus.annotation.TableField;

importcom.baomidou.mybatisplus.generator.AutoGenerator;

importcom.baomidou.mybatisplus.generator.config.DataSourceConfig;

importcom.baomidou.mybatisplus.generator.config.GlobalConfig;

importcom.baomidou.mybatisplus.generator.config.PackageConfig;

importcom.baomidou.mybatisplus.generator.config.StrategyConfig;

importcom.baomidou.mybatisplus.generator.config.po.TableFill;

importcom.baomidou.mybatisplus.generator.config.rules.DateType;

importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

 

importjava.util.ArrayList;

 

 

publicclassChengCode {

   publicstaticvoidmain(String[] args) {

       //构建代码生成器对象

       AutoGeneratormpg=newAutoGenerator();

       //1、全局配置

       GlobalConfiggc=newGlobalConfig();

       StringprojectPath=System.getProperty("user.dir");

       gc.setOutputDir(projectPath+"/src/main/java");//生成文件的输出目录

       gc.setAuthor("鼠皓明");//作者

       gc.setOpen(false);//是否打开输出目录

       gc.setFileOverride(false);//是否覆盖已有的文件

       gc.setServiceName("%sService");//去除Service的I前缀

       gc.setIdType(IdType.ID_WORKER);//主键生成策略

       //ONLY_DATE 只使用 java.util.date 代替,SQL_PACK 使用 java.sql 包下的,TIME_PACK 使用 java.time 包下的 java8 新的时间类型

       gc.setDateType(DateType.TIME_PACK);//数据库时间类型 到 实体类时间类型 对应策略

       gc.setSwagger2(true);//开启swagger2模式

       mpg.setGlobalConfig(gc);

 

       //2、数据源配置

       DataSourceConfigdsc=newDataSourceConfig();

       dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSl=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");

       dsc.setDriverName("com.mysql.cj.jdbc.Driver");

       dsc.setUsername("root");

       dsc.setPassword("123456");

       dsc.setDbType(DbType.MYSQL);//数据库类型

       mpg.setDataSource(dsc);

 

       //3、包的配置

       PackageConfigpc=newPackageConfig();

       pc.setModuleName("blog");//父包模块名

       pc.setParent("com.cheng");//父包名,如果为空,将下面子包名必须写全部, 否则就只需写子包名

       pc.setEntity("pojo");

       pc.setMapper("mapper");

       pc.setService("service");

       pc.setController("controller");

       mpg.setPackageInfo(pc);

 

       //4、策略配置

       StrategyConfigsy=newStrategyConfig();

       sy.setInclude("user");//设置要映射的表,可以设置多张

       sy.setNaming(NamingStrategy.underline_to_camel);//从数据库表到文件的命名策略,下划线转驼峰命名

       sy.setColumnNaming(NamingStrategy.underline_to_camel);//列的命名策略

       sy.setEntityLombokModel(true);//开启lombok支持

       sy.setLogicDeleteFieldName("deleted");//设置逻辑删除字段

       sy.setVersionFieldName("version");//设置乐观锁

       sy.setRestControllerStyle(true);//开启controller的restful命名

       sy.setControllerMappingHyphenStyle(true);//开启controller中请求映射的连字符样式,如:localhost:8080/hello_id_1

       //设置自动填充

       TableFillcreate_time=newTableFill("create_time", FieldFill.INSERT);

       TableFillupdate_time=newTableFill("update_time", FieldFill.INSERT_UPDATE);

       ArrayList<TableFill>tableFills=newArrayList<>();

       tableFills.add(create_time);

       tableFills.add(update_time);

       mpg.setStrategy(sy);

 

       //执行代码生成器

       mpg.execute();

   }

}

执行代码生成器,查看项目结构的变化

QQ截图20211227170617.png

代码生成器执行成功,自动生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码。


相关文章
|
2月前
Mybatis-Plus 代码生成器
Mybatis-Plus 代码生成器
|
4月前
|
JavaScript Java 关系型数据库
SpringBoot + Mybatis + Vue的代码生成器
SpringBoot + Mybatis + Vue的代码生成器
72 2
|
4月前
|
JavaScript 关系型数据库 Java
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
148 0
|
4月前
|
XML Java 数据库连接
MyBatis代码生成器
MyBatis代码生成器
|
4月前
|
SQL 资源调度 Java
mybatis-plus代码生成器的UI界面使用非常方便
mybatis-plus代码生成器的UI界面使用非常方便
82 0
|
4月前
如何使用MybatisPlus的代码生成器功能?
如何使用MybatisPlus的代码生成器功能?
|
4月前
|
数据库连接
一款非常好用的MyBatisPlus代码生成工具
一款非常好用的MyBatisPlus代码生成工具
29 0
|
4月前
|
Java 数据库连接 数据库
CodeGenerator——SpringBoot整合MyBatisPlus代码生成器
CodeGenerator——SpringBoot整合MyBatisPlus代码生成器
271 0
|
4月前
|
Java 数据库 Maven
MyBatisPlus-代码生成器原理及实现
MyBatisPlus-代码生成器原理及实现
82 0