MybatisPlus代码生成器

这里讲解的是新版 (mybatis-plus 3.5.1+版本),旧版不兼容

官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)

配置

这里的配置表格和官方文档一致

数据源配置(DataSource)

属性 说明 示例
url jdbc路径 jdbc:mysql://127.0.0.1:3306/mybatis-plus
username 数据库账号 root
password 数据库密码 123456
dbQuery(IDbQuery) 数据库查询 new MySqlQuery()
schema(String) 数据库schema(部分数据库适用) mybatis-plus
typeConvert(ITypeConvert) 数据库类型转换器 new MySqlTypeConvert()
keyWordsHandler(IKeyWordsHandler) 数据库关键字处理器 new MySqlKeyWordsHandler()

全局配置(GlobalConfig)

方法 说明 示例
fileOverride 覆盖已生成文件 默认值:false
disableOpenDir 禁止打开输出目录 默认值:true
outputDir(String) 指定输出目录 /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp
author(String) 作者名 baomidou 默认值:作者
enableKotlin 开启 kotlin 模式 默认值:false
enableSwagger 开启 swagger 模式 默认值:false
dateType(DateType) 时间策略 DateType.ONLY_DATE=Date 默认值: DateType.TIME_PACK=LocalDateTime
commentDate(String) 注释日期 默认值: yyyy-MM-dd

包配置(PackageConfig)

方法 说明 示例
parent(String) 父包名 默认值:com.baomidou
moduleName(String) 父包模块名 默认值:无
entity(String) Entity 包名 默认值:entity
service(String) Service 包名 默认值:service
serviceImpl(String) Service Impl 包名 默认值:service.impl
mapper(String) Mapper 包名 默认值:mapper
mapperXml(String) Mapper XML 包名 默认值:mapper.xml
controller(String) Controller 包名 默认值:controller
other(String) 自定义文件包名 输出自定义文件时所用到的包名
pathInfo(Map<OutputFile, String>) 路径配置信息 Collections.singletonMap(OutputFile.mapperXml, "D://")

策略配置(StrategyConfig)

方法 说明 示例
enableCapitalMode 开启大写命名 默认值:false
enableSkipView 开启跳过视图 默认值:false
disableSqlFilter 禁用 sql 过滤 默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关
enableSchema 启用 schema 默认值:false,多 schema 场景的时候打开
likeTable(LikeTable) 模糊表匹配(sql 过滤) likeTable 与 notLikeTable 只能配置一项
notLikeTable(LikeTable) 模糊表排除(sql 过滤) likeTable 与 notLikeTable 只能配置一项
addInclude(String...) 增加表匹配(内存过滤) include 与 exclude 只能配置一项
addExclude(String...) 增加表排除匹配(内存过滤) include 与 exclude 只能配置一项
addTablePrefix(String...) 增加过滤表前缀
addTableSuffix(String...) 增加过滤表后缀
addFieldPrefix(String...) 增加过滤字段前缀
addFieldSuffix(String...) 增加过滤字段后缀
entityBuilder 实体策略配置
controllerBuilder controller 策略配置
mapperBuilder mapper 策略配置
serviceBuilder service 策略配置

模板引擎配置(TemplateEngine)

默认 Velocity ;可选模板引擎 Beetl 或 Freemarker。(二选一即可)

模板引擎 代码
Velocity 默认 .templateEngine(new VelocityTemplateEngine())
Freemarker 可选 .templateEngine(new FreemarkerTemplateEngine())
Beetl 可选 .templateEngine(new BeetlTemplateEngine())

手动配置代码生成器

  1. 建表,插入数据

    DROP TABLE IF EXISTS user;
    
    CREATE TABLE user
    (
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    version INT(10) NOT NULL DEFAULT 1 COMMIT '乐观锁版本号',
    DELETED INT(10) NOT NULL DEFAULT 0 COMMIT '逻辑删除',
    CREATE_TIME DATE COMMIT '创建时间',
    modify_time DATE COMMIT '更新时间',
    PRIMARY KEY (id)
    ); DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES
    (1, '工藤新一','test1@baomidou.com'),
    (2, '毛利兰','est2@baomidou.com'),
    (3, '柯南', 28, 'test3@baomidou.com'),
    (4, '灰原哀', 21, 'test4@baomidou.com'),
    (5, '工藤有希子', 24, 'test5@baomidou.com');
  2. 导入依赖

    <dependencies>
    <!--spring-boot-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--SpringBootTest-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    <!--swagger-->
    <dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.6.3</version>
    </dependency>
    <!--lombok-->
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    </dependency>
    <!--mysql 驱动-->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
    </dependency>
    <!--mybatis-plus-->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
    </dependency>
    <!--mybatis-plus-generator 生成器-->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.2</version>
    </dependency>
    <!--velocity-->
    <dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
    </dependency>
    <!--以下两个引擎模板保留一个即可,看个人爱好选择-->
    <!--freemarker引擎模板-->
    <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
    </dependency>
    <!--beetl引擎模板-->
    <dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl</artifactId>
    <version>3.8.1.RELEASE</version>
    </dependency>
    </dependencies>
  3. yaml

    #设置开发环境
    spring:
    datasource:
    username: root
    password: 123456
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 mybatis-plus:
    #配置日志 log-impl:日志实现
    configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    global-config:
    db-config:
    logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
    logic-delete-value: 1 # 逻辑已删除值(默认为 1)
    logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
  4. 在测试类里写入主方法并修改参数,运行即可【配置已经封装好了】

    public static void main(String[] args) {
    
        //这里按着给的注解修改参数即可
    
            //手动配置数据源
    String url="jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"; //注意修改数据库名
    String name="root";
    String password="123456"; //数据库表的设置
    List<String> listTable = Arrays.asList("user"); //设置需要自动代码生成的表名
    List<String> listTableSuffix = Arrays.asList("_b"); //设置 过滤 表的后缀
    List<String> listTablePrefix = Arrays.asList("t_","c_"); //设置 过 //基本信息
    String author = "柯南"; //作者
    String parent = "com"; //父包名
    String module = "example"; //模块包名 //已封装好,无需更改。可按照需求进行注释 //1、配置数据源
    FastAutoGenerator.create(url, name, password)
    //2、全局配置
    .globalConfig(builder -> {
    builder.author(author) // 设置作者名
    .outputDir(System.getProperty("user.dir") + "/src/main/java") //设置输出路径:项目的 java 目录下【System.getProperty("user.dir")意思是获取到项目所在的绝对路径】
    .commentDate("yyyy-MM-dd hh:mm:ss") //注释日期
    .dateType(DateType.ONLY_DATE) //定义生成的实体类中日期的类型 TIME_PACK=LocalDateTime;ONLY_DATE=Date;
    .fileOverride() //覆盖之前的文件
    .enableSwagger() //开启 swagger 模式
    .disableOpenDir(); //禁止打开输出目录,默认打开
    })
    //3、包配置
    .packageConfig(builder -> {
    builder.parent(parent) // 设置父包名
    .moduleName(module) //设置模块包名
    .entity("entity") //pojo 实体类包名
    .service("service") //Service 包名
    .serviceImpl("service.impl") // ***ServiceImpl 包名
    .mapper("mapper") //Mapper 包名
    .xml("mapper.xml") //Mapper XML 包名
    .controller("controller") //Controller 包名
    .other("config") //自定义包名(一般不在这里生成,而是后面编写的时候自己建包)
    .pathInfo(Collections.singletonMap(OutputFile.mapper.xml, System.getProperty("user.dir")+"/src/main/resources/mapper")); //配置 mapper.xml 路径信息:项目的 resources 目录下
    })
    //4、策略配置
    .strategyConfig(builder -> {
    builder
    .enableCapitalMode() //开启大写命名
    .enableSkipView() //创建实体类的时候跳过视图
    .addInclude(listTable) // 设置需要生成的数据表名
    .addTableSuffix(listTableSuffix) //设置 过滤 表的后缀
    .addTablePrefix(listTablePrefix) // 设置 过滤 表的前缀 //4.1、实体类策略配置
    .entityBuilder()
    .enableChainModel() //开启链式模型
    //.disableSerialVersionUID() //默认是开启实体类序列化,可以手动disable使它不序列化。由于项目中需要使用序列化就按照默认开启了
    .enableTableFieldAnnotation() // 开启生成实体时生成字段注解
    .enableLombok() //开启 Lombok
    .versionColumnName("version") //乐观锁字段名(数据库)
    .versionPropertyName("version") //乐观锁属性名(实体)
    .logicDeleteColumnName("deleted") //逻辑删除字段名(数据库)
    .logicDeletePropertyName("deleteFlag") //逻辑删除属性名(实体)
    .naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略:默认是下划线转驼峰命。这里可以不设置
    .columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略:下划线转驼峰命。(默认是和naming一致,所以也可以不设置)
    .addTableFills(
    new Column("create_time", FieldFill.INSERT),
    new Column("modify_time", FieldFill.INSERT_UPDATE)
    ) //添加表字段填充,"create_time"字段自动填充为插入时间,"modify_time"字段自动填充为插入修改时间
    .idType(IdType.AUTO) //设置主键自增 //4.2、Controller策略配置
    .controllerBuilder()
    .enableHyphenStyle() //开启驼峰连转字符
    .formatFileName("%sController") //格式化 Controller 类文件名称,%s进行匹配表名,如 UserController
    .enableRestStyle() //开启生成 @RestController 控制器 //4.3、service 策略配置
    .serviceBuilder()
    .formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService
    .formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl //4.4、Mapper策略配置
    .mapperBuilder()
    .superClass(BaseMapper.class) //设置父类
    .enableBaseResultMap() //启用 BaseResultMap 生成
    .enableBaseColumnList() //启用 BaseColumnList
    .formatMapperFileName("%sMapper") //格式化 mapper 文件名称
    .enableMapperAnnotation() //开启 @Mapper 注解
    .formatXmlFileName("%sXml") //格式化Xml文件名称
    .formatMapperFileName("%sMapper"); //格式化Mapper文件名称 })
    //5、模板
    .templateEngine(new VelocityTemplateEngine())
    /*
    模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker(以下两个引擎用哪个就保留哪个)
    .templateEngine(new BeetlTemplateEngine())
    .templateEngine(new FreemarkerTemplateEngine())
    */
    .templateEngine(new FreemarkerTemplateEngine()) //本人选择了Freemarker
    //6、执行
    .execute();
    }
  5. 运行结果:

    生成的包:

注意:代码生成器生成的实体类是用@Setter和@Getter ,没有toString方法和有参、无参构造,所以代码生成后需要手动在实体类上删除@Setter和@Getter ,添加@Data @NoArgsConstructor @AllArgsConstructor


MybatisPlus——全网配置最全的代码生成器的更多相关文章

  1. Eclipse上Maven环境配置使用 (全)

    Eclipse上Maven环境配置使用 (全) 1. 安装配置Maven: 1.1 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven. ...

  2. 配置composer全量镜像与主要命令

    配置中国全量镜像 查看当前composer配置的镜像地址 composer config -g repo.packagist 显示如下,显示说明没有配置镜像地址 接下来我使用下面的命令进行查看配置的镜 ...

  3. 每天玩转3分钟 MyBatis-Plus - 1. 配置环境

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 ...

  4. Mybatis-Plus插件配置

    yml配置 1 # Mybatis-Plus 2 mybatis-plus: 3 # 配置mapper的扫描,找到所有的mapper.xml映射文件 4 mapper-locations: com.x ...

  5. Open Harmony移植:build lite配置目录全梳理

    摘要:本文主要介绍build lite 轻量级编译构建系统涉及的配置目录的用途,分析相关的源代码. 本文分享自华为云社区<移植案例与原理 - build lite配置目录全梳理>,作者:z ...

  6. Mybatis-Plus的配置和基本使用

    目录 基本配置 简单使用 代码生成器 基本配置 首先新建一个springboot项目,然后导入数据库驱动,lombok和mybatis-plus依赖: <!-- 数据库驱动 --> < ...

  7. RocketMQ4.3.x 史上配置最全详解,没有之一

    最近整理了RocketMQ的配置参数一部分参考rocketmq技术内幕,一部分自己看源码猜测,有表述不清楚或不正确请广大网友指正 这里应该是最全的配置解析了,搞了2天.以后查询就好办了,仅此贡献给广大 ...

  8. mybatisplus ssm配置要点

    本以为不难,但也捣鼓了大半天,记录要点如下: 在pom中引入mybatis plus相关包 <!-- mybatis-plus框架包 start --> <dependency> ...

  9. Hystrix 配置参数全解析

    code[class*="language-"], pre[class*="language-"] { background-color: #fdfdfd; - ...

随机推荐

  1. Typecho博客转移服务器,数据备份.

    目录 Typecho博客转移服务器,数据备份. 简述操作(有基础的mjj看这个简述就可以了.) 详细步骤(建议小白来看, 已经在很多详细方面进行说明了.) 备份篇 备份导入与数据库转移篇 重新部署ty ...

  2. Egg上层框架CabloyJS是如何输出SQL语句日志的?

    背景 在Egg开发实践中,经常会遇到一个问题:如何查看刚刚执行过的Egg组装的原生SQL语句呢? 1. 现有方案 可以直接在项目的config配置文件中添加MySQL配置debug: true.这会启 ...

  3. AtCoder ABC 242 题解

    AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求 ...

  4. Docker容器Nginx负载均衡配置、check及stub模块安装

    Nginx是一款高性能的HTTP和反向代理.负载均衡web服务器.本次在Docker容器中部署三个tomcat,Nginx代理三个tomcat服务(以下称节点)来模拟实现负载均衡效果,配置check模 ...

  5. java中的方法重载(overload)

    什么时候方法重载:当两个方法的功能是相似的,可以考虑使用方法重载.若两个方法根本没有关系,无必要使用方法重载. 什么时候代码会发生方法重载:三个条件:1,在同一个类中.2,方法名相同.3,参数列表相同 ...

  6. TypeScript(4)接口

    介绍 TypeScript 的核心原则之一是对值所具有的结构进行类型检查.我们使用接口(Interfaces)来定义对象的类型.接口是对象的状态(属性)和行为(方法)的抽象(描述) 接口初探 声明接口 ...

  7. DAST 黑盒漏洞扫描器 第四篇:扫描性能

    0X01 前言 大多数安全产品的大致框架 提高性能的目的是消费跟得上生产,不至于堆积,留有余力应对突增的流量,可以从以下几个方面考虑 流量:减少无效流量 规则:减少规则冗余请求 生产者:减少无效扫描任 ...

  8. 你真的了解git的分支管理跟其他概念吗?

    现在前端要学的只是太多了,你是不是有时会有这个想法,如果我有两个大脑.一个学Vue,一个学React,然后到最后把两个大脑学的知识再合并在一起,这样就能省时间了. 哈哈,这个好像不能实现.现实点吧!年 ...

  9. 一分钟入门 Babel(下一代 JavaScript 语法的编译器)

    简单来说把 JavaScript 中 es2015/2016/2017/2046 的新语法转化为 es5,让低端运行环境(如浏览器和 node )能够认识并执行.严格来说,babel 也可以转化为更低 ...

  10. SAP BOM 读取

    1.查找 物料号.工厂.物料描述. 表:MARA MARC MAKT 逻辑: 输入物料(选择选项)中的物料编号(MARA-MATNR)和                       输入工厂(选择选项 ...