MyBatisPlus(二十二)代码生成器

news2024/11/18 1:22:28

使用场景

使用代码生成器,根据数据库表,自动生成对应的 Entity,Mapper,Service,Controller 。

代码

依赖

两个依赖:

  1. 生成器依赖
  2. 模板依赖
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

生成器代码

package com.example.db.mybatisplus;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.sql.Types;
import java.util.Collections;

public class AutoGenerator {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mybatisplus?serverTimeZone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true";
        FastAutoGenerator.create(url, "root", "password")
                .globalConfig(builder -> {
                    builder.author("宋冠巡") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .outputDir("E://mybatis-plus/"); // 指定输出目录
                })
                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                    if (typeCode == Types.SMALLINT) {
                        // 自定义类型转换
                        return DbColumnType.INTEGER;
                    }
                    return typeRegistry.getColumnType(metaInfo);
                }))
                .packageConfig(builder -> {
                    builder.parent("com.example.db") // 设置父包名
                            .moduleName("mybatisplus") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "E://mybatis-plus/")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder()
                            .formatFileName("%sEntity")
//                            .superClass("com.example.db.BaseEntity")
//                            .addSuperEntityColumns("id", "create_time", "update_time")
                            .enableLombok()
                            .disableSerialVersionUID()
                            .logicDeleteColumnName("deleted")
                            .versionColumnName("version")
                            .addTableFills(new Column("create_time", FieldFill.INSERT))
                            .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE));
                    builder.serviceBuilder()
                            .formatServiceFileName("%sService");
                    builder.addInclude("tb_user") // 设置需要生成的表名
                            .addTablePrefix("tb_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

效果

将生成的代码,复制到项目中。
配置好 MapperScan 后,能够正常运行。
注意:entity 默认使用的 lombok 为@Getter @Setter,需要手动改为@Data

生成代码示例

在这里插入图片描述

放入项目后示例

在这里插入图片描述

参考

官网 - 代码生成器配置

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

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

相关文章

思维导图Xmind2023安装教程分享

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;xmind 获取 1、解压压缩包得到以下文件。 2、如果“winmm.dll”被系统删除不见&#xff0c;打开屏幕右下角处“windows安全中心”&#xff0c;在历史记录里将已删除的还原即可。 3、以管理员身份打开“Setup”。 4、…

Win10如何彻底关闭wsappx进程?

Win10如何彻底关闭wsappx进程&#xff1f;在Win10电脑中&#xff0c;用户看到了wsappx进程占用了大量的系统资源&#xff0c;所以想结束wsappx进程&#xff0c;提升电脑的运行速度。但是&#xff0c;用户们不知道彻底关闭掉wsappx进程的方法&#xff0c;那么接下来小编就给大家…

windows编译zlmediakit

开发环境搭建 使用visual studio 2022 打开360软件管家 &#xff0c;选择宝库&#xff0c;输入2022 点击安装 选择下图中的选择项目进行安装&#xff0c;安装路径可以修改为d盘 等待安装完成 打开源码进行编译 双击打开 选择打开文件夹 选择代码文件夹 配置如下&#xff…

视频播放音画同步处理

一、视频播放流程 播放一个视频&#xff0c;一般分一下几步完成 解复用&#xff08;Demux&#xff09;&#xff1a;在媒体文件中将音频数据、视频数据、字母数据分离出来。 二、播放参数说明 视频帧率&#xff1a;一秒钟需要显示的画面&#xff0c;比如25FPS&#xff0c;意思就…

sql注入的其他注入

1.宽字节注入 原因 绕过单双引号转义 ?id1 ?id1 1\ 服务器会把单引号转义&#xff0c;单引号由原来的定义字符串的特殊字符被转义为普通字符。 315c27 非常强烈的暗示 代码 单双引号转义 并且编码变成了gbk 上编码 表 这个是GBK编码表&#xff1a;https://…

可变参数模板+lambda

目录 可变参数模板 引入 介绍 展开参数包的方法 递归 逗号表达式 整体使用 emplace 介绍 ​编辑 使用 模拟实现 代码 示例 lambda 引入 介绍 格式 使用 传参 捕捉 原理 可变参数模板 引入 还记得c语言中的printf吗,可以传入任意数量的变量来打印,非常…

pytorch,tf维度理解RNN

input_t input_t.squeeze(1) 这行代码用于从 input_t 中去除尺寸为1的维度。在深度学习中&#xff0c;经常会出现具有额外尺寸为1的维度&#xff0c;这些维度通常是为了匹配模型的期望输入维度而添加的。 在这里&#xff0c;input_t可能具有形状 (batch_size, 1, feature_dim…

青否数字人SaaS系统5.0发布,支持真人接管实时驱动!

青否数字人SaaS系统5.0正式发布&#xff0c;提供口播视频批量制作7*24小时直播全套解决方案。同时直播间支持真人开麦/输入文字选择音色接管&#xff0c;实时驱动直播间数字人回复。 7*24小时直播 青否数字人客户端选择克隆好的数字人主播&#xff0c;克隆好的声音&#xff0…

实现vue项目和springboot项目前后端数据交互

1、安装node.js 太高版本的win7不支持 这里安装node-v12.16.2-x64.msi&#xff0c;指定安装位置后直接按下一步就可以。npm是node内置的工具 这里配置npm的镜像cnpm&#xff08;提高下载速度&#xff0c;以后用到npm的命令都可以用cnpm命令替换&#xff09;不指定cnpm版本使用…

Tuxera2023最新版本新功能特性

当您获得一台新 Mac 时&#xff0c;它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac&#xff0c;您需要一个附加的 NTFS 驱动程序。Tuxera 的 Microsoft NTFS for Mac 是一款易于使用的软件&#xff0c;可以在 Mac 上打开、编辑、复制、移动或删…

【论文阅读笔记】 Curated Pacific Northwest AI-ready Seismic Dataset

Curated Pacific Northwest AI-ready Seismic Dataset 太平洋西北部人工智能地震数据集 摘要 描述了一个AI就绪地震数据集包括各种地震事件参数 仪器元数据 地震波行描述地震目录和事件属性&#xff08;事件震级类型&#xff0c;信道类型&#xff0c;波形极性&#xff0c;信…

【框架源码篇 02】Spring源码-手写DI

Spring源码手写篇-手写DI 简单回顾前面的手写IoC的内容。 一、DI介绍 DI(Dependency injection)依赖注入。对象之间的依赖由容器在运行期决定&#xff0c;即容器动态的将某个依赖注入到对象之中。说的直白点就是给Bean对象的成员变量赋值。 在这里我们就需要明白几个问题。 1.…

【进阶C语言】C语言文件操作

1. 为什么使用文件 2. 什么是文件 3. 文件的打开和关闭 4. 文件的顺序读写 5. 文件的随机读写 6. 文本文件和二进制文件 7. 文件读取结束的判定 8. 文件缓冲区 一、文件与文件的意义 1.文件的意义 文件的意义&#xff0c;无非就是为什么要使用文件&#xff1f; &#xff08;1&…

当中国走进全球化的“深水区”,亚马逊云科技解码云时代的中国式跃升

中国跨境贸易中支付金融与服务领域的综合创新型企业连连国际的联席CEO沈恩光发现&#xff0c;眼下&#xff0c;很多跨境电商的出海方式已发生了变化。几年前&#xff0c;它们还主要借助第三方电商平台&#xff0c;而现在&#xff0c;更多公司开始选择通过自主渠道进入海外市场&…

线性代数-Python-01:向量的基本运算 - 手写Vector及numpy的基本用法

文章目录 一、代码仓库二、向量的基本运算2.1 加法2.2 数量乘法2.3 向量运算的基本性质2.4 零向量2.5 向量的长度2.6 单位向量2.7 点乘/内积&#xff1a;两个向量的乘法 --答案是一个标量 三、手写Vector代码3.1 在控制台测试__repr__和__str__方法3.2 创建实例测试代码3.3 完整…

磁盘显示脱机状态如何处理

问题描述&#xff1a; 在磁盘管理可以看到磁盘1是脱机状态 脱机&#xff08;由于管理员设置的策略&#xff0c;该磁盘处于脱机状态&#xff09; 解决方法一&#xff1a;CMD窗口处理 1.打开CMD&#xff0c;运行diskpart 2.输入san&#xff0c;打开san策略&#xff0c; 输入san…

2防火墙:基础知识

看了一下相关视频&#xff0c;感觉要会防火墙&#xff0c;还是得补一下网络基础。看一下谢希仁的《计算机网络》&#xff0c;应该主要看网络层就可以。网络以前学的还可以&#xff0c;但现在也就能记得不到50%&#xff0c;正好重新学习一下&#xff0c;或许会有新的感受。 看完…

S4.2.4.3 Electrical Idle Sequence(EIOS)

一 本章节主讲知识点 1.1 EIOS的具体码型 1.2 EIOS的识别规则 1.3 EIEOS的具体码型 二 本章节原文翻译 当某种状态下,发送器想要进入电器空闲状态的时候,发送器必须发送EIOSQ,也既是:电器Electrical Idle Odered Set Sequence。当然,除非在某些情况下,特殊制定,也是…

用这个方法,谁都可以刷到leetcode排名第一(可复制)

前几天&#xff0c;有人分享了一个利用GPT在leetcode刷题&#xff0c;学习算法&#xff0c;启迪思路&#xff0c;提升编程能力的方法。 开始还不信&#xff0c;自己试了一下&#xff0c;惊了&#xff01;AI理解问题&#xff0c;编码解决问题的能力现在已经这么流弊了吗&#xf…