mybatis-plus逆向自动生成代码总结记录

        使用mybatis-plus(mp)自动生成各个层的代码,减轻开发工作,不过现在用mybatis-flex的越来越多,综合性能更好。

1.pom文件简要

 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3</version>
        </dependency>

        <!--mybatis-plus 代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.32</version>
            <scope>compile</scope>
        </dependency>

2.CodeGenerator代码生成器类

        配置具体内容,运行该类即可

package com.wei.easyexcel.config;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @BelongsProject: easyExcel
 * @BelongsPackage: com.wei.easyexcel.config
 * @ClassName Generator
 * @Author: weiq
 * @CreateTime: 2024-03-01  14:35
 * @Description: TODO
 * @Version: 1.0
 */


/**
 * <p>
 * mysql 代码生成器
 * </p>
 */
public class CodeGenerator {

    @Test
    public void run() {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/numone-springboot?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai",
                        "root",
                        "root
")

                //全局配置
                .globalConfig(builder ->
                {
                    builder.fileOverride()
                            .disableOpenDir()//禁止打开输出目录 默认为true
                            .outputDir("D:\\code\\code\\easyExcel\\src\\main\\java")//指定输出目录
                            .author("weiq")//作者名
//                .enableKotlin()//开启 kotlin 模式
                            .enableSwagger()//开启 swagger 模式
                            .dateType(DateType.TIME_PACK)//时间策略
                            .commentDate("yyyy-MM-dd");//注释日期
                })

                //包配置
                .packageConfig(builder ->
                {
                    builder.parent("com")//父包名
                            .moduleName("wei.easyexcel")//父包模块名
                            .entity("entity")//Entity 包名
                            .service("service")//Service 包名
                            .serviceImpl("Impl")//Service Impl 包名
                            .mapper("mapper")//Mapper 包名
                            .xml("mapperXml")//Mapper XML 包名
                            .controller("controller");//Controller 包名
                    //.other("other")
//                .pathInfo(Collections.singletonMap(OutputFile.xml, "D://"))//路径配置信息
                })

                //模板配置
                .templateConfig(builder ->
                {
                    builder.disable(TemplateType.ENTITY)//禁用模板
                            .entity("/templates/entity.java")//设置实体模板路径(JAVA)
                            .service("/templates/service.java")
                            .serviceImpl("/templates/serviceImpl.java")
                            .mapper("/templates/mapper.java")
                            .xml("/templates/mapper.xml")
                            .controller("/templates/controller.java");
                })

                //策略配置
                .strategyConfig(builder ->
                {
                    builder.enableCapitalMode()//开启大写命名
//                .enableSkipView()
//                .disableSqlFilter()
//                .likeTable(new LikeTable("USER"))
//                .addInclude("t_simple")
                            .addTablePrefix("t_")//去掉表前缀
//                .addFieldSuffix("_flag")//去掉表后缀

                            //Entity配置策略
                            .entityBuilder()//名称转换实现
//                .superClass(com.baomidou.global.BaseEntity)设置父类
//                .disableSerialVersionUID()//禁用生成 serialVersionUID
                            .enableChainModel()//开启链式模型 默认为false
                            .enableLombok()//开启 lombok 模型 默认为false
                            .enableRemoveIsPrefix()//开启 Boolean 类型字段移除 is 前缀 默认为false
                            .enableTableFieldAnnotation()//开启生成实体时生成字段注解 默认为false
                            .enableActiveRecord()//开启 ActiveRecord 模型  默认为false
                            .versionColumnName("version")//乐观锁数据库字段
                            .versionPropertyName("version")//乐观锁实体名
                            .logicDeleteColumnName("deleted")//删除数据库字段
                            .logicDeletePropertyName("deleteFlag")//删除实体名
                            // .naming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略 这里是下划线转驼峰
                            .columnNaming(NamingStrategy.underline_to_camel)//数据库字段表映射到实体的命名策略
                            .addSuperEntityColumns("created_by", "created_time", "updated_by", "updated_time")//添加父类公共字段  数据库写了就可以不加
                            .addIgnoreColumns()//忽略字段
                            .addTableFills(new Column("create_time", FieldFill.INSERT))//表字段填充
                            .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))//表字段填充
                            .idType(IdType.AUTO)//全局主键类型
                            .formatFileName("%sEntity")//格式化文件名称

                            //Controller策略配置
                            .controllerBuilder()
//                .superClass(BaseController.class)//配置父类
                            .enableHyphenStyle()//开启驼峰转连字符 默认为false
                            .enableRestStyle()//开启生成@RestController 控制器 默认为false
                            .formatFileName("%sController")//格式化文件名称
                            //Service配置策略
                            .serviceBuilder()
                            .superServiceClass(IService.class)//设置 service 接口父类
                            .superServiceImplClass(ServiceImpl.class)//设置 service 实现类父类
                            .formatServiceFileName("%sService")//格式化 service 接口文件名称
                            .formatServiceImplFileName("%sServiceImp")//格式化 service 实现类文件名称
                            //Mapper策略配置
                            .mapperBuilder()
                            .superClass(BaseMapper.class)//设置父类
                            .enableMapperAnnotation()//开启@Mapper注解 默认false
                            .enableBaseResultMap()//启用 BaseResultMap 生成  默认false
                            .enableBaseColumnList()//启用 BaseColumnList  默认false
//                .cache(MyMapperCache.class)//设置缓存实现类
                            .formatMapperFileName("%sDao")//格式化 mapper 文件名称
                            .formatXmlFileName("%sXml");//格式化 xml 实现类文件名称
                })
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}

3.运行完成后,目录大概如下所示

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初学Vue总结

0 Vue概述 问题&#xff1a;我们已经学过了htmlCssjavascript,可以开发前端页面了&#xff0c;但会发现&#xff0c;效率太低了。那么&#xff0c;有没有什么工具可以提高我们的开发效率&#xff0c;加快开发速度呢&#xff1f; 他来了&#xff0c;他来了&#xff0c;他大佬似…

光耦合器在电路板上的作用

在不断创新的电子世界中&#xff0c;一个关键组件在确保电子设备无缝运行方面默默地发挥着至关重要的作用&#xff1a;光耦合器。光耦合器经常被普通消费者忽视&#xff0c;它是电路板上的无名英雄&#xff0c;在维护电子系统的完整性和安全性方面发挥着关键作用。 什么是光耦合…

ventoy制作启动U盘

Ventoy新一代多系统启动U盘解决方案。国产开源U盘启动制作工具&#xff0c;支持Legacy BIOS和UEFI模式&#xff0c;理论上几乎支持任何ISO镜像文件&#xff0c;支持加载多个不同类型的ISO文件启动&#xff0c;无需反复地格式化U盘。把ISO系统文件拷贝到U盘&#xff0c;U盘插入电…

Springboot 3.0

一、Springboot3.0介绍 1.1、 Springboot3.0概述 在2022 年 11 月 24 日Spring Boot 3.0 现已正式发布&#xff0c;它包含了 12 个月以来 151 个开发者的 5700 多次代码提交。这是自 4.5 年前发布 2.0 以来&#xff0c;Spring Boot 的第一次重大修订。 它也是第一个支持 Spr…

化是渐化,变是顿变:一窥 OpenAI Sora 相关技术的演进

编者按&#xff1a; 近期&#xff0c;OpenAI 发布通用视觉大模型 Sora &#xff0c;这也是继文本模型ChatGPT和图片模型Dall-E之后&#xff0c;又一极具颠覆性的大模型产品&#xff0c;人们重新思考了生成式 AI 在视觉内容创作领域的应用前景&#xff0c;内容创作工作流有望被颠…

ETH网络中的区块链

回顾BTC网络的区块链系统 什么是区块链&#xff1f;BTC网络是如何运行的&#xff1f;BTC交易模式 - UXTO ETH网络中的区块链 ETH网络的基石依旧是 区块链。上面 什么是区块链&#xff1f; 的文章依旧适用。 相比BTC网络&#xff0c;ETH网络的账户系统就相对复杂&#xff0c;所…

【论文阅读-PRIVGUARD】Day4:3节

3 PRIVANALYZER&#xff1a;强制执行隐私政策的静态分析 本节介绍PRIVANALYZER&#xff0c;这是一个用于强制执行由PRIVGUARD追踪的隐私政策的静态分析器**。我们首先回顾LEGALEASE政策语言&#xff0c;我们使用它来正式编码政策&#xff0c;然后描述如何静态地强制执行它们**…

储能:第十四届中国国际储能展览会在杭州国际博览中心召开

数字储能网讯&#xff1a;由中国化学与物理电源行业协会主办&#xff0c;中国化学与物理电源行业协会储能应用分会和中国储能网联合承办的第十四届中国国际储能大会暨展览会将于2024年3月10-12日在杭州国际博览中心召开&#xff0c;大会主题为“共建储能生态链&#xff0c;共创…

Java毕业设计-基于springboot开发的农机设备电招平台系统-毕业论文+答辩PPT(有源代码)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、后台功能模块2.1管理员功能模块2.2 农机机主功能模块2.3 使用者功能模块 四、毕设内容和源代码获取总结 Java毕业…

从理论到落地,大模型评测体系综合指南

1956年夏&#xff0c;“人工智能” 这一概念被提出。距今已有近70年的发展历史。中国科学院将其划分为六个阶段&#xff1a;起步发展期&#xff08;1956年—1960s&#xff09;&#xff0c;反思发展期&#xff08;1960s-1970s&#xff09;,应用发展期&#xff08;1970s-1980s),低…

数据库 与 数据仓库

OLTP 与 OLAP OLTP(On Line Transaction Processing&#xff0c;联机事务处理) 系统主要针对具体业务在数据库联机下的日常操作&#xff0c;适合对少数记录进行查询、修改&#xff0c;例如财务管理系统、ERP系统、交易管理系统等。该类系统侧重于基本的、日常的事务处理&#…

CentOS 7开启Web服务

之前有写过用kali开启web服务方法&#xff0c;这次写个用cendos7开启服务的步骤&#xff01; 1、安装httpd yum install -y httpd 若显示安装失败&#xff0c;报错原因为找不到httpd的安装包&#xff0c;可参考这篇文件更新yum源&#xff1a;CentOS 7更换yum源|详细步骤-CSDN…

(每日持续更新)jdk api之PipedInputStream基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

双通道 40V 160mΩ车规级高侧电源开关带诊断功能反向电池保护功能

概述 PC8916是双通道、高功率具有集成NMOS功率FET的开关&#xff0c;以及电荷泵。该设备集成了高级 保护功能&#xff0c;例如负载电流限制&#xff0c;通过功率限制进行过载主动管理带可配置闭锁的超温停机。全面诊断和高精度电流感应这些功能实现了对负载的智能控制。有源漏…

零售经营“新赛道” ——基于手机银行APP专区调研的客群精细化运营分析报告

随着银行业竞争的不断深入及新客户增量日渐“到顶”&#xff0c;各家银行的客群竞争逐渐由“跑马圈地”进入“精耕细作”的新阶段&#xff0c;在客群精准化服务方面不断深入。目前&#xff0c;国内主要商业银行均已在手机银行上建立了相应的用户专区&#xff08;或对应版本APP&…

敏捷开发模型:一种灵活、协作和持续的软件开发方法

敏捷开发模型&#xff1a;一种灵活、协作和持续的软件开发方法 引言 在软件开发领域&#xff0c;随着市场需求的不断变化和技术的迅速发展&#xff0c;传统的瀑布模型逐渐暴露出其局限性。为了应对这些挑战&#xff0c;敏捷开发模型应运而生。敏捷开发模型强调灵活、协作和持…

EasyRecovery2024免费无需付费版电脑数据恢复软件

一、功能概述 EasyRecovery数据恢复软件是一个功能全面的数据恢复工具&#xff0c;其主要功能包括&#xff1a; 文件恢复&#xff1a;能够恢复各种文件类型&#xff0c;如文档、图片、视频、音频等&#xff0c;满足用户多样化的数据恢复需求。分区恢复&#xff1a;当硬盘分区…

Bert-as-service 实战

参考&#xff1a;bert-as-service 详细使用指南写给初学者-CSDN博客 GitHub - ymcui/Chinese-BERT-wwm: Pre-Training with Whole Word Masking for Chinese BERT&#xff08;中文BERT-wwm系列模型&#xff09; 下载&#xff1a;https://storage.googleapis.com/bert_models/…

推荐一个屏幕上鼠标高亮显示的小工具

在视频录制等特定场景下&#xff0c;很多人希望在点击鼠标时能够在屏幕上及时进行显示&#xff0c;便于别人发现&#xff0c;提高别人的注意力。 因此&#xff0c;很多录屏软件中都内含显示鼠标点击功能。那如果不支持该怎么办呢&#xff1f;其实&#xff0c;也是可以通过其他工…

JavaScript-关于事件、事件流(捕获、冒泡)、事件源、常用事件

1.如何注册事件(如何绑定事件) ​ 何为注册事件&#xff0c;就是给元素添加事件&#xff0c;其方式有传统注册事件、方法监听注册事件。 0、1级事件&#xff08;传统注册事件&#xff09;不允许多个响应程序 我们在元素内或js内使用on的方式就是传统注册事件&#xff0c;这种形…