MyBatisPlus代码生成器的使用示例

作者:万里顾—程 时间:2022-04-28 07:52:42 

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

表结构

MyBatisPlus代码生成器的使用示例

当前项目结构

MyBatisPlus代码生成器的使用示例

配置代码生成器

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

  • 数据库连接密码


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 = new AutoGenerator();
       //1、全局配置
       GlobalConfig gc = new GlobalConfig();
       String projectPath = 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、数据源配置
       DataSourceConfig dsc = new DataSourceConfig();
       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、包的配置
       PackageConfig pc = new PackageConfig();
       pc.setModuleName("blog");//父包模块名
       pc.setParent("com.cheng");//父包名,如果为空,将下面子包名必须写全部, 否则就只需写子包名
       pc.setEntity("pojo");
       pc.setMapper("mapper");
       pc.setService("service");
       pc.setController("controller");
       mpg.setPackageInfo(pc);

//4、策略配置
       StrategyConfig sy = new StrategyConfig();
       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
       //设置自动填充
       TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
       TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
       ArrayList<TableFill> tableFills = new ArrayList<>();
       tableFills.add(create_time);
       tableFills.add(update_time);
       mpg.setStrategy(sy);

//执行代码生成器
       mpg.execute();
   }
}

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

MyBatisPlus代码生成器的使用示例

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

来源:https://blog.csdn.net/wpc2018/article/details/122176665

标签:MyBatisPlus,代码生成器
0
投稿

猜你喜欢

  • C#基础之Lambda表达式用法实例教程

    2021-12-06 14:07:56
  • java用applet画图用到的方法(涉及双缓冲)

    2021-07-09 17:27:32
  • Android检测手机多点触摸点数的方法

    2023-03-10 11:08:35
  • 教你怎么使用Java实现WebSocket

    2022-10-31 04:08:50
  • Android HandlerThread案例详解

    2022-04-20 09:46:25
  • 浅谈log4j的rootLogger及其他坑爹的地方

    2023-07-31 02:23:14
  • Android实现短信验证码获取自动填写功能(详细版)

    2022-07-22 07:08:10
  • 安卓(Android)游戏开发音效代码

    2023-11-15 14:47:58
  • SpringBoot使用Sharding-JDBC实现数据分片和读写分离的方法

    2023-07-27 02:15:50
  • Unity游戏开发实现场景切换示例

    2022-12-12 16:06:20
  • C#入门之定义类成员与接口实现

    2023-05-25 09:50:58
  • 举例解析Java的图像缓冲技术的使用

    2022-09-08 17:17:17
  • JAVA多线程知识汇总

    2021-08-03 09:04:47
  • springboot-dubbo cannot be cast to问题及解决

    2022-06-27 14:46:51
  • Android Compose实现联系人列表流程

    2023-09-25 00:50:04
  • Java中websocket消息推送的实现代码

    2023-06-02 09:26:56
  • Java编程实现A*算法完整代码

    2022-06-18 12:28:57
  • Java文件上传与文件下载实现方法详解

    2023-11-20 12:28:45
  • 详解OpenGL Shader抗锯齿的实现

    2021-09-24 21:54:07
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    2021-07-12 04:16:10
  • asp之家 软件编程 m.aspxhome.com