Mybatis-Plus一键生成代码

Mybatis-Plus一键生成代码

一、闲言碎语

闲来无事看了看了MP的官网看到一键生成的代码更新了!

Mybatis-Plus一键生成代码

整个Ui风格都变了,遂决定瞅一眼新的代码生成器

官网地址~~

二、引入依赖

新的代码生成只有在MP的版本 >= 3.5.1才可以使用 并且不兼容之前的版本


            com.baomidou
            mybatis-plus-boot-starter
            3.4.0

            com.baomidou
            mybatis-plus-generator
            3.5.1

            org.freemarker
            freemarker
            2.3.31

            io.swagger
            swagger-annotations
            1.6.2

swagger可取舍,如果开启Lombok则可以不使用

三、配置

1、快速生成(简介版)

FastAutoGenerator.create("url", "username", "password")
    .globalConfig(builder -> {
        builder.author("baomidou") // 设置作者
            .enableSwagger() // 开启 swagger 模式
            .fileOverride() // 覆盖已生成文件
            .disableOpenDir() // 禁止打开输出目录
            .outputDir("D://").disableOpenDir(); // 指定输出目录
    })
    .packageConfig(builder -> {
        builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
            .moduleName("system") // 设置父包模块名
            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") +)); // 设置mapperXml生成路径 前边是取项目路径
    })
    .strategyConfig(builder -> {
        builder.addInclude("t_simple") // 设置需要生成的表名,不设置生成全表
            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
    })
    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    .execute();

2、快速生成(详细版)

public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/daydayup?useUnicode=true&useSSL=false&characterEncoding=utf8", "root", "root")
                .globalConfig(builder -> {
                    builder.author("知足") // 设置作者
                            .enableSwagger() // 开启 swagger 模式  可理解为接口文档规范
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("") // 设置父包名
                            .moduleName("") // 设置父包模块名
                            .entity("entity")
                            .controller("controller")
                            .service("service")
                            .serviceImpl("imp") //设置包名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/srca/main/resources/mapper/")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("表名")// 设置需要生成的表名 不使用该方法默认生成全表
                            .addTablePrefix("t_", "c_") // 设置过滤表前缀
                            .serviceBuilder()//Service配置
                            .formatServiceFileName("%sService")//%s = 表名  表名Service
                            .formatServiceImplFileName("%sServiceImp")//同上
                            .entityBuilder()//实体类配置 一般都是表名
                            .enableLombok()//开启Lombok 开启 swagger 模式 就没必要使用这个
                            .logicDeleteColumnName()//逻辑删除字段对应数据库那个字段
                            .logicDeletePropertyName()//逻辑删除字段对应实体类库那个字段
                            .controllerBuilder()//Controller配置
                            .formatFileName("%sController")
                            .enableRestStyle()//开启生成@RestController控制器
                            .mapperBuilder()//mapper配置
                            .formatMapperFileName("%sMapper")
                            .formatXmlFileName("%sMapper")
                            .enableMapperAnnotation()//开启@Mapper
                            .superClass(BaseMapper.class);//继承的父类
                })
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();

    }

尤其注意,pageinfo只能改变一个层级的文件输出目录,若是同时想改变Entity和MapperXml或者更多需要手动写一个Map

Map pathInfo = new HashMap<>();
pathInfo.put(OutputFile.entity,System.getProperty("user.dir") + "entity位置");
pathInfo.put(OutputFile.mapperXml,System.getProperty("user.dir") + "xml位置");

3、交互生成(暂未研究)

FastAutoGenerator.create(DATA_SOURCE_CONFIG)
    // 全局配置
    .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride())
    // 包配置
    .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
    // 策略配置
    .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                        .controllerBuilder().enableRestStyle().enableHyphenStyle()
                        .entityBuilder().enableLombok().addTableFills(
                                new Column("create_time", FieldFill.INSERT)
                        ).build())
    /*
        模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
       .templateEngine(new BeetlTemplateEngine())
       .templateEngine(new FreemarkerTemplateEngine())
     */
    .execute();

// 处理 all 情况
protected static List getTables(String tables) {
    return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}

Original: https://www.cnblogs.com/pkkyh/p/15728431.html
Author: 迷途者寻影而行
Title: Mybatis-Plus一键生成代码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/507926/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • VMWare 12 Mac 10.11 XCode 7.3 Ipad真机调试重要问题总结

    XCode 7.3可以不需要每年缴费而直接调试IOS应用,测试如下: 1,安装Mac 10.11在VMWare12上,网上有很多例子。注意: 1.1,虚拟机设置中USB为USB2….

    数据库 2023年6月14日
    093
  • Exception Handling Considered Harmful

    Do, or do not. There is no try. — Yoda, The Empire Strikes Back(George Lucas) Recent progr…

    数据库 2023年6月9日
    090
  • Java中,那些关于String和字符串常量池你不得不知道的东西

    老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true。 String s1 = new Strin…

    数据库 2023年6月16日
    093
  • 基础知识,不是很了解的

    Java中方法参数传递方式是按值传递。对于基本类型(int a, long b),参数传递时传递的是值,例如int a = 5,传递的就是5。如果是引用类型,传递是指向具体对象内存…

    数据库 2023年6月14日
    0103
  • innobackupex备份源码解析

    目前MySQL的物理备份大多数采用xtrabackupex进行,其备份过程如下图所示,这里通过解析 xtrabackup 的源码来详细看看其是如何进行备份的,xtrabackup …

    数据库 2023年6月9日
    0104
  • Java 反射学习笔记

    反射,指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对任意一个对象,都能调用它的任意一个方法。这种动态获取信息,以及动态调用对象方法的功能,叫做 Java 语言…

    数据库 2023年6月11日
    096
  • 计算机中内存、cache和寄存器之间的关系及区别

    寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。…

    数据库 2023年6月11日
    0102
  • MySQL45讲之order工作原理

    本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索引树排序,以及每种排序方式具体是如何工作的。 当使用 explain 查看执行计划时,如果 extra 中有 …

    数据库 2023年5月24日
    0117
  • SkyWalking Agent端日志插件的编写历程与使用说明

    前一段时间顺利完成了SkyWalking Agent端logger-plugin插件的开发,在此做个总结。一方面给插件的使用方法写一中文说明,另一方面分享一下该插件开发过程中的一些…

    数据库 2023年6月11日
    072
  • MySQL的文件系统(Linux环境)

    /var/lib/mysql/ 可通过以下sql命令查看: mysql> show variables like ‘datadir’; +—————+–…

    数据库 2023年5月24日
    073
  • 23种设计模式之策略模式

    文章目录 概览 策略模式的优缺点 策略模式的应用场景 策略模式的结构与实现 * 模式的结构 模式的实现 策略模式的扩展 总结 ; 概览 策略模式定义了一系列算法,并将每个算法封装起…

    数据库 2023年6月6日
    0119
  • 设计模式之适配器模式

    一、适配器模式:把两个不匹配的接口通过一个中间层变成可匹配的,这个中间层叫适配器,比如两脚插头+三脚插座无法进行匹配,可使用一个转接头来结合使用,这个转接头就是适配器。 二、实现思…

    数据库 2023年6月14日
    071
  • docker的相关命令

    docker的相关命令 1.安装docker: (1)yum -y install docker ​ sudo sh get-docker.sh 2.从远程拉取应用的镜像源: do…

    数据库 2023年6月16日
    076
  • Js前端-路由管理器函数

    buildUrl:function( path ,params ){ let url = "" + path; let _paramUrl = "&q…

    数据库 2023年6月9日
    080
  • Stack

    供自己巩固集合知识时写的笔记,不会对所有的内容都介绍栈(Stack)是一种后进先出(LIFO:Last In First Out)的数据结构 Stack只有入栈和出栈的操作: 把元…

    数据库 2023年6月9日
    078
  • PostgreSQL 和 MySQL 在用途、好处、特性和特点上的异同

    PostgreSQL 和 MySQL 在用途、好处、特性和特点上的异同。 PostgreSQL 和 MySQL 是将数据组织成表的关系数据库。这些表可以根据每个表共有的数据链接或关…

    数据库 2023年5月24日
    099
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球