Mybatis PLUS代码生成器generate

news2024/11/25 0:07:39

Mybatis PLUS代码生成器generate

  • 一、2.3版本
  • 二、生成代码
  • 三、3.5.1版本
  • 四、生成代码

一、2.3版本

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>2.3</version>
</dependency>

二、生成代码

Generate.java

package com;

import com.baomidou.mybatisplus.enums.IdType;
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.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class Generate {

    public static void main(String[] args) {
        generate();
    }

    public static void generate(){
        AutoGenerator autoGenerator = new AutoGenerator();
        GlobalConfig globalConfig = new GlobalConfig();
        //作者
        globalConfig.setAuthor("张三");
        globalConfig.setActiveRecord(true);
        globalConfig.setBaseColumnList(true);
        globalConfig.setBaseResultMap(true);
        globalConfig.setEnableCache(false);
        //文件生成路径
        globalConfig.setOutputDir("D:\\generate");
        globalConfig.setIdType(IdType.AUTO);
        autoGenerator.setGlobalConfig(globalConfig);

        //数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("root");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/my?serverTimezone=GMT%2B8&useSSL=false");
        autoGenerator.setDataSource(dataSourceConfig);

        //策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true);
        strategyConfig.setDbColumnUnderline(true);
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        //泛指前缀下的所有表
        strategyConfig.setTablePrefix("t_");
        //指定具体表
        strategyConfig.setInclude("t_org", "t_user");
        autoGenerator.setStrategy(strategyConfig);

        //包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.my");
        packageConfig.setController("controller");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setEntity("entity");
        autoGenerator.setPackageInfo(packageConfig);

        //生成代码
        autoGenerator.execute();
    }

}

三、3.5.1版本

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>

四、生成代码

Generate.java

package com;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Generate {

    private static final String URL = "jdbc:mysql://localhost:3306/?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "root";
    // 项目根路径。生成结果如:D:\generate
    private static final String projectRootPath = "D:\\generate";
    // 父包名。用于生成的java文件的import。替换为系统的包名
    private static final String parentPackageName = "com.my";

    /**
     * 执行此处
     */
    public static void main(String[] args) {
        generate();
    }

    protected static void generate() {
        // 包路径
        String packagePath = projectRootPath + "\\code";
        // XML文件的路径
        String mapperXmlPath = projectRootPath + "\\xml";
        // 开始执行代码生成
        FastAutoGenerator.create(URL, USERNAME, PASSWORD)
            // 1. 全局配置
            .globalConfig(builder -> builder
            // 作者名称
            .author("Demo")
            // 开启覆盖已生成的文件。注释掉则关闭覆盖。
            // .fileOverride()
            // 禁止打开输出目录。注释掉则生成完毕后,自动打开生成的文件目录。
            .disableOpenDir()
            // 指定输出目录。如果指定,Windows生成至D盘根目录下,Linux or MAC 生成至 /tmp 目录下。
            .outputDir(packagePath)
            // 开启swagger2.注释掉则默认关闭。
            .enableSwagger()
            // 指定时间策略。
            .dateType(DateType.TIME_PACK)
            // 注释时间策略。
            .commentDate("yyyy-MM-dd")
        )
        // 2. 包配置
        .packageConfig((scanner, builder) -> builder
            // 设置父表名
            .parent(parentPackageName)
            .moduleName(scanner.apply("请输入模块名:"))
            // mapper.xml 文件的路径。单模块下,其他文件路径默认即可。
            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlPath))
        )
        // 3. 策略配置
        .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔;如生成所有表,请输入【all】:")))
            // 阶段1:Entity实体类策略配置
            .entityBuilder()
            .superClass(MyEntity.class) //改为自己封装的实体对应的固定项
            .addIgnoreColumns("created_at","created_by","updated_at","updated_by","deleted")
            // 开启生成实体时生成字段注解。
            // 会在实体类的属性前,添加[@TableField("nickname")]
            .enableTableFieldAnnotation()
            // 阶段2:Mapper策略配置
            .mapperBuilder()
            // 开启 @Mapper 注解。
            // 会在mapper接口上添加注解[@Mapper]
            .enableMapperAnnotation()
            // 启用 BaseResultMap 生成。
            // 会在mapper.xml文件生成[通用查询映射结果]配置。
            .enableBaseResultMap()
            // 启用 BaseColumnList。
            // 会在mapper.xml文件生成[通用查询结果列 ]配置
            .enableBaseColumnList()
            // 阶段4:Controller策略配置
            .controllerBuilder()
            // 会在控制类中加[@RestController]注解。
            .enableRestStyle()
            // 开启驼峰转连字符
            .enableHyphenStyle()
            .build()
        )
        // 4. 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
        //.templateEngine(new BeetlTemplateEngine())
        .templateEngine(new FreemarkerTemplateEngine())
        // 5. 执行
        .execute();
    }

    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

}

在这里插入图片描述

OK,就这些吧。
有什么不对的还望指正,书写不易,觉得有帮助就点个赞吧!☺☺☺

参考链接:
https://zhuanlan.zhihu.com/p/686967462

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 随机生成密码包含大写字母、数字、特殊字符且指定长度

一、写在前面 现在网络环境越来越复杂&#xff0c;对密码安全要求也越来越严格&#xff0c;在生产环境种&#xff0c;对密码要求是一个不少于16位的随机密码&#xff0c;要求含有大写字母、小写字母、数字、特殊字符中的三种。我们使用java代码直接来可控的生成这种密码。 二…

数字县域+乡村振兴解决方案

1. 国家大数据战略与乡村振兴 国家大数据战略的核心内容包括加快建设数字中国&#xff0c;推动数据资源整合和开放共享&#xff0c;以大数据助力产业转型升级和社会治理创新&#xff0c;构建数字经济&#xff0c;提升国家治理现代化水平。 2. 乡村振兴战略的重大意义 乡村振…

【C++】特殊类设计 — 不能被拷贝的类 , 只能在堆/栈上创建对象的类 ,不能被继承的类

苟活者在淡红的血色中&#xff0c;会依稀看见微茫的希望&#xff1b; 真的猛士&#xff0c;将更奋然而前行。 --- 鲁迅 --- toc 1 特殊类 在实践中&#xff0c;常常会有一些比较有意思的特殊场景&#xff1a; 不能被拷贝的类 - 独一无二的魔法宝物&#xff1a; 在一个角色…

『大模型笔记』虚拟机(Virtual Machine,VM)与Docker对比!

『大模型笔记』虚拟机(Virtual Machine,VM)与Docker对比! 文章目录 一. 虚拟机(Virtual Machine,VM)与Docker对比!1. 定义这两种技术2. 工作原理3. 关于如何选择适合工作负载的技术的指导二. 参考文献Docker 只是一个轻量级的虚拟机吗?虽然二者确实有一个共同点,即 虚…

【RISC-V设计-13】- RISC-V处理器设计K0A之指令测试

【RISC-V设计-13】- RISC-V处理器设计K0A之指令测试 文章目录 【RISC-V设计-13】- RISC-V处理器设计K0A之指令测试1.简介2.验证用例3.指令代码4.链接脚本5.编译脚本6.仿真结果6.1 复位结束6.2 运行成功6.3 终端打印 7.总结 1.简介 借助上一篇文章所提及的验证环境&#xff0c;…

对象引用对于非静态的字段、方法或属性是必需的

CS0120 对象引用对于非静态的字段、方法或属性“Person.FirstName”是必需的 类Person internal class Person{// public static string FirstName { get;set; }"sss";public string FirstName { get; set; } "sss";public static string MiddleName …

k8s挂载nginx配置文件

文章目录 步骤一&#xff1a;启动指定服务的工作负载时&#xff0c;指定需要挂载的配置文件&#xff0c;替换工作负载内置的配置文件步骤二: 在配置字典中新增配置文件步骤三&#xff1a;自定义挂载的配置文件 步骤一&#xff1a;启动指定服务的工作负载时&#xff0c;指定需要…

深度学习 —— 个人学习笔记17(锚框、多尺度锚框)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 三十四、锚框 import torch import matplotlib.pyplot as plt from matplotlib_inline import backend_inlinetorch.…

Python 绘图进阶之箱线图:揭示数据的分布和异常值

Python 绘图进阶之箱线图&#xff1a;揭示数据的分布和异常值 引言 在数据分析中&#xff0c;理解数据的分布情况和识别异常值是非常重要的任务。箱线图&#xff08;Box Plot&#xff09;作为一种简洁有效的统计图表&#xff0c;能够直观地展示数据的中位数、四分位数、极值以…

除了画图,你还需要透视平面设计师的日常工作

平面设计师是市场上较为稀缺且需求旺盛的职业&#xff0c;许多企业都在争相聘请优秀的设计师。平面设计在日常生活中无处不在&#xff0c;应用领域广泛&#xff0c;如广告设计、logo设计和名片设计等。因此&#xff0c;本篇文章将为你详细介绍平面设计。 1、什么是平面设计&am…

YOLT论文精读

引言 很早之前&#xff0c;在本校老师的带领下接触到了目标检测领域。在卫星遥感图像方面有一篇经典的论文《You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery》。科研小白一开始反复看了几遍也没弄懂&#xff0c;决定写博客来加深自己的理解。…

Vue 3+Vite+Eectron从入门到实战系列之(五)一后台管理登录页

前面已经讲了不少基础知识&#xff0c;这篇开始&#xff0c;我们进行实操&#xff0c;做个后台管理系统&#xff0c;打包成多端的,可安装的桌面app!!其中&#xff0c;登录&#xff0c;退出的提示信息用系统的提示&#xff0c;不使用elemengplus的弹窗提示&#xff01;&#xff…

Java生成图形验证码

1、加依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency> 2、写接口&#xff0c;这块不需要登录成功才能操作的&#xff0c;所以写controller就行了…

基于Hadoop的网购笔记本电脑大数据分析与可视化系统

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍数据采集过程数据预处理Hadoop大数据分析可视化展示每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本项目首先通过爬虫获取京东…

【C++】产生拷贝构造的三种形式

目录 用已存在的类对象去初始化同类另一个对象当函数类的形参是对象&#xff0c;调用函数形参和实参进行结合当函数的返回值是对象&#xff0c;函数执行完成返回调用者时 用已存在的类对象去初始化同类另一个对象 Date d1; Date d2(d1); Date d3 d2; //也会调用拷贝构造注意赋…

谷粒商城实战笔记-168-缓存-SpringCache-整合体验@Cacheable

文章目录 一&#xff0c;168-缓存-SpringCache-整合&体验Cacheable1&#xff0c;引入Spring Cache依赖2&#xff0c;配置3&#xff0c;启用cache4&#xff0c;在查询数据库的方法上加上注解Cacheable5&#xff0c;测试 二&#xff0c;169-缓存-SpringCache-Cacheable细节设…

LeetCode_sql_day16(601.体育馆的人流量)

描述&#xff1a;601. 体育馆的人流量 - 力扣&#xff08;LeetCode&#xff09; 编写解决方案找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。 返回按 visit_date 升序排列 的结果表。 输入Stadium表: ----------------------------- | id | visit_date | peop…

Linux系统移植——系统移植初步介绍(一)

一、嵌入式Linux系统软件组成及分布 1.1 内核&#xff08;Kernel&#xff09; 功能&#xff1a;负责管理硬件资源、进程调度、内存管理、文件系统、网络等。分布&#xff1a;通常是定制的Linux内核&#xff0c;以适应特定的硬件平台和应用需求。 1.2 根文件系统&#xff08;…

sql实验代码整理:创建表文件Student、Course、Sc完成下列问题

使用SQL语句创建数据库students. create database students; 创建表文件Student、Course、Sc&#xff0c;表结构如表3-7~表3-9所示。 代码及运行结果&#xff1a; 代码及运行结果&#xff1a; 代码及运行结果&#xff1a; 为表Student 添加地址列Address&#xff0c;数据类型为…

14.3 Matplotlib与Seaborn数据可视化

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…