MyBatis-Plus代码生成器

2023-11-10


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

1.在SpringBoot项目中导入Maven依赖

        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--Velocity-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

2.编写配置

    @Test
    public void code() {

        /*创建代码生成器对象*/
        AutoGenerator autoGenerator = new AutoGenerator();

        /*1.全局配置*/
        GlobalConfig gc = new GlobalConfig();
        /*获取当前项目路径*/
        String property = System.getProperty("user.dir");
        /*生成文件的输出目录*/
        gc.setOutputDir(property + "/src/main/java");
        /*开发人员*/
        gc.setAuthor("阿波");
        /*是否打开输出目录*/
        gc.setOpen(false);
        /*是否覆盖已有文件*/
        gc.setFileOverride(false);
        /*指定生成的主键的ID类型*/
        gc.setIdType(IdType.ID_WORKER);
        /*去除Service的I前缀*/
        gc.setServiceName("%sService");
        /*时间类型对应策略*/
        gc.setDateType(DateType.ONLY_DATE);
        /*开启swagger2模式*/
        gc.setSwagger2(true);
        /*是否在xml中添加二级缓存配置*/
        gc.setEnableCache(true);

        /*将配置添加进代码生成器对象*/
        autoGenerator.setGlobalConfig(gc);

        /*2.配置数据源*/
        DataSourceConfig dataSource = new DataSourceConfig();
        /*驱动连接的URL*/
        dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=Asia/Shanghai");
        /*驱动名称*/
        dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
        /*数据库连接用户名*/
        dataSource.setUsername("root");
        /*数据库连接密码*/
        dataSource.setPassword("libo");
        /*数据类型*/
        dataSource.setDbType(DbType.MYSQL);

        /*将配置添加进代码生成器对象*/
        autoGenerator.setDataSource(dataSource);

        /*3.包的配置*/
        PackageConfig pc = new PackageConfig();
        /*父包模块名*/
        pc.setModuleName("codeTest");
        /*父包名*/
        pc.setParent("com.libo");
        /*Controller包名*/
        pc.setController("controller");
        /**Entity包名/
         pc.setEntity("entity");
         /*Mapper包名*/
        pc.setMapper("mapper");
        /*Service包名*/
        pc.setService("service");

        /*将配置添加进代码生成器对象*/
        autoGenerator.setPackageInfo(pc);

        /*4.策略配置*/
        StrategyConfig strategy = new StrategyConfig();
        /*设置映射的表名*/
        strategy.setInclude("user");
        /*数据库表映射到实体的命名策略*/
        strategy.setNaming(NamingStrategy.underline_to_camel);
        /*数据库表字段映射到实体的命名策略*/
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
        /*是否为lombok模型*/
        strategy.setEntityLombokModel(true);
        /*逻辑删除属性名称*/
        strategy.setLogicDeleteFieldName("deleted");
        /*乐观锁属性名称*/
        strategy.setVersionFieldName("version");
        /*自动填充*/
        TableFill cteateTime = new TableFill("cteate_time", FieldFill.INSERT_UPDATE);
        TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);
        ArrayList<TableFill> tableFills = new ArrayList<>();
        tableFills.add(cteateTime);
        tableFills.add(updateTime);
        strategy.setTableFillList(tableFills);
        strategy.setRestControllerStyle(true);
        strategy.setControllerMappingHyphenStyle(true);

        /*将配置添加进代码生成器对象*/
        autoGenerator.setStrategy(strategy);


        /*执行*/
        autoGenerator.execute();
    }

3.运行后的效果

在这里插入图片描述

如果不能忠于自己的心,胜负又有什么价值呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis-Plus代码生成器 的相关文章

  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • mysql 在 sum() 函数上使用 concat,例如 concat(sum(col1),"%")

    我正在尝试合并多个查询 但其中一个查询使用 sum 当我尝试在此列上应用 concat 时 我得到不需要的 blob 结果 我如何在聚合列上应用 concat 和 union 我期待这个结果 SELECT row 1 col1 UNION
  • MySQL 将 ÅäÖ 视为 AAO?

    这两个查询给了我完全相同的结果 select from topics where name Harligt select from topics where name H rligt 这怎么可能 看起来mysql在搜索时会将 翻译成aao
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch
  • WHERE 条件基于 PK 的查询是否建议使用“LIMIT 1”?

    我正在查询 mySQL 数据库以检索 1 个特定行的数据 我使用表主键作为 WHERE 约束参数 E g SELECT name FROM users WHERE userid 4 userid 列是表的主键 在 mySQL 语句末尾使用
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 阿里云上传图片的使用,AccessKey查看,入门级别

    阿里云上传图片的使用 可能很多人想上传图片到云端 却连阿里云怎么使用都还不会 我这个是入门级别的教程 一步一步来 我这里先附上我自己的前端上传图片教程代码vue前端直传阿里云 首先就是点击阿里云之后进行注册 注册就不贴了啊 阿里云是可以直接
  • css选择同时有两个类名的标签

    这个技巧比较厉害 记录一下 链接
  • Anaconda查看、创建、切换、删除虚拟环境

    Anaconda查看 创建 切换 删除虚拟环境 参考链接 1 查看已有虚拟环境 在命令行输入以下命令 conda info envs 这里的base 带星号的 代表基层或者当前虚拟环境 paddle是我新建的一个虚拟环境 2 创建新的虚拟环
  • 【微服务部署】五、Jenkins+Docker一键打包部署NodeJS(Vue)项目的Docker镜像步骤详解

    NodeJS Vue 项目也可以通过打包成Docker镜像的方式进行部署 原理是先将项目打包成静态页面 然后再将静态页面直接copy到Nginx镜像中运行 一 服务器环境配置 前面说明了服务器Nginx的安装和配置 这里稍微有些不同 但是因
  • Qlib股票数据获取与查看(Qlib学习1)

    文章目录 Qlib基本信息 数据使用方法 1 借助Qlib下载数据 2 查看相关数据 参考链接 Qlib基本信息 Qlib Github主页 https github com microsoft qlib Qlib quickstart h
  • AngularJS中(function(a,b){})(a,b)立即函数理解

    function window angular document 函数体 window window angular document 一 Scope 我们知道 Javascript是函数作用域 因此 这么写创建了一个 私有作用域 例如 f
  • QNX的license-key,试用qnx入门参考-QNX的密钥账号密码

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额1元起步 多少随意 锋影 e mail 174176320 qq com 老版本的QNX4 x QNX6 4 可以通过修改时间或重装系统进行继续试用使用 到了新版本
  • QVariant存放QWidget*

    今天看一个开源程序发现有个这样的用法 很新奇 记录一下 include widget h include
  • Docker搭建BWAPP靶场

    buggy web Application 这是一个集成了各种常见漏洞和最新漏洞的开源Web应用程序 目的是帮助网络安全爱好者 开发人员和学生发现并防止网络漏洞 包含了超过100种漏洞 涵盖了所有主要的已知Web漏洞 包括OWASP Top
  • [完整]js实现放大镜效果

    实现 1 小盒子small当鼠标移入 将小img里src赋值给中等框src 将小盒子的src赋值给大盒子的背景 br 2 大盒子的展示与隐藏 经过大盒子展示大盒子 离开大盒子隐藏大盒子 br 3 显示隐藏layer 遮罩层 遮罩层跟随鼠标移
  • unity文字转语音插件(中文版)教程

    插件名RT Voice PRO 2020 4 10 不错的一款插件 我用2020版本UNITY进行测试使用的 可以读英文和中文 想要插件可以关注V公众号 unity风雨路 免费自取 或者直接去csdn下载 链接在这里 RT VoicePRO
  • 【千律】C++基础:string扩展工具箱的使用方法

    include
  • Micropython应用篇四---F407VE Black开发板IIC OLED1306

    Micropython应用篇四 F407VE Black开发板IIC OLED1306显示 最近一段时间做Keil例程比Micropython多很多 无论如何 Micropython Arduino作为嵌入式入门篇也发过一些文章 包括公司的
  • 科普什么是JS混淆加密解密以及其价值

    JavaScript 混淆加密是一种将 JavaScript 代码转换为不易被人阅读和理解的形式的技术 它通常用于保护代码的知识产权和减少被恶意修改的风险 使用 JavaScript 混淆加密有一些好处和价值 首先 混淆加密可以保护代码的知
  • SpringBoot 直接返回 Json格式对象(报错:返回对象为空{})

    文章目录 1 需求描述 2 代码展示 3 原因分析 4 解决方案 5 效果展示 6 结束语 1 需求描述 我们现在要干一个什么事情呢 我们要在浏览器输入一个请求地址 然后我们的后端就给我返回一个User对象即可 并且我希望以Json的格式返
  • Pycharm下载+安装+破解

    安装 进入到Pycharm官网下载区域 选择与系统对应的下载包然后点击下载 https www jetbrains com pycharm download section windows 破解 https blog csdn net u0
  • UnityVR--UIManager--UI管理2

    目录 前言 UIManger的实现 1 需要用到的变量和数据 2 在构造中的工作 3 初始化面板 4 显示面板 5 隐藏面板和隐藏所有面板 6 其他小工具 在场景中实现 1 不同面板的类型设置 2 场景中的设置 前言 接前篇 上一篇已经有了
  • 前后端分离的项目——图书管理系统(上)

    文章目录 项目搭建 使用elementUI 主体布局 后台服务搭建 实现分页模糊查询 后台CRUD 新增 修改 删除 表单校验和克隆模块 克隆出管理员模块 登录前后台 登录 全局异常处理 登录前端 数据安全 项目sql文件 点击下载 项目搭
  • 企业应如何无缝保护其云工作负载?

    企业为了保护自己的云环境 可能已经采取了保护云身份 强化云安全态势 配置强大的云访问控制等措施 然而 除此之外还需要做一件事 云工作负载保护平台 即CWPP 云工作负载保护平台会保护在企业的云上运行的工作负载 这些工作负载与构成云环境基础的
  • MyBatis-Plus代码生成器

    文章目录 1 在SpringBoot项目中导入Maven依赖 2 编写配置 3 运行后的效果 AutoGenerator 是 MyBatis Plus 的代码生成器 通过 AutoGenerator 可以快速生成 Entity Mapper