SpringBoot使用mybatis-plus代码生成器且xml文件生成在resource文件下

news2024/11/16 18:09:37

SpringBoot使用mybatis-plus代码生成器且xml文件生成在resource文件下

  • 一、Pom依赖
  • 二、核心代码
  • 三、效果


一、Pom依赖

        <!--项目代码初始化生成器两个依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>
        <!-- 添加 模板引擎 依赖 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

二、核心代码

    //通过插件构建项目
    @Test
    public void autoGenerate() {
        // Step1:代码生成器
        //创建一个 代码生成器。用于生成代码。
        //此处不用修改。
        AutoGenerator mpg = new AutoGenerator();

        // Step2:全局配置
        //配置全局信息。指定代码输出路径,以及包名、作者等信息。
        //此处按需添加,projectPath 需要修改,setAuthor 需要修改。
        GlobalConfig gc = new GlobalConfig();
        // 填写代码生成的目录(需要修改)
        String projectPath = "D:\\JavaDemo\\library_management_system\\library_management_system_java";
        // 拼接出代码最终输出的目录
        gc.setOutputDir(projectPath + "/src/main/java");
        // 配置开发者信息(可选)(需要修改)
        gc.setAuthor("licy");
        // 配置是否打开目录,false 为不打开(可选)
        gc.setOpen(false);
        // 实体属性 Swagger2 注解,添加 Swagger 依赖,开启 Swagger2 模式(可选)
        gc.setSwagger2(false);
        // 重新生成文件时是否覆盖,false 表示不覆盖(可选)
        gc.setFileOverride(false);
        // 配置主键生成策略,此处为 ASSIGN_ID(可选)
        gc.setIdType(IdType.AUTO);
        // 配置日期类型,此处为 ONLY_DATE(可选)
        gc.setDateType(DateType.ONLY_DATE);
        // 默认生成的 service 会有 I 前缀
        gc.setServiceName("%sService");
        mpg.setGlobalConfig(gc);

        // Step3:数据源配置(需要修改)
        //置数据源信息。用于指定 需要生成代码的 数据仓库、数据表。
        //setUrl、setDriverName、setUsername、setPassword 均需修改。
        DataSourceConfig dsc = new DataSourceConfig();
        // 配置数据库 url 地址
        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/library?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
        // dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定数据库名
        // 配置数据库驱动
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        // 配置数据库连接用户名
        dsc.setUsername("root");
        // 配置数据库连接密码
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // Step:4:包配置
        //配置包信息。
        //setParent、setModuleName 均需修改。其余按需求修改.
        PackageConfig pc = new PackageConfig();
        // 配置父包名(需要修改)
        pc.setParent("com.example");
        // 配置模块名(需要修改)
        pc.setModuleName("libraryManagementSystemJava");
        // 配置 entity 包名
        pc.setEntity("entity");
        // 配置 mapper 包名
        pc.setMapper("mapper");
        pc.setXml(null);
        // 配置 service 包名
        pc.setService("service");
        // 配置 serviceImpl 包名
        pc.setServiceImpl("service.Impl");
        // 配置 controller 包名
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // Step:5:将xml生成到resource下面
        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };

        String templatePath = "/templates/mapper.xml.vm";
        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath + "/src/main/resources/mapper/"
                        // + pc.getModuleName()
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);
        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();

        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);


        // Step6:策略配置(数据库表配置)
        //配置数据表映射信息。
        //setInclude 需要修改,其余按实际开发修改。
        StrategyConfig strategy = new StrategyConfig();
        // 指定表名(可以同时操作多个表,使用 , 隔开)(需要修改)(不设置的话默认全部表)
        //strategy.setInclude("company_car","company_computer","company_user","company_user_car");
        //strategy.setInclude("system_user");
        // 配置数据表与实体类名之间映射的策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 配置数据表的字段与实体类的属性名之间映射的策略
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 配置 lombok 模式
        strategy.setEntityLombokModel(true);
        // 配置 rest 风格的控制器(@RestController)
        strategy.setRestControllerStyle(true);
        // 配置驼峰转连字符
        strategy.setControllerMappingHyphenStyle(true);
        // 配置表前缀,生成实体时去除表前缀
        // 例如表名为 test_mybatis_plus_user,模块名为 test_mybatis_plus,去除前缀后剩下为 user。
        //strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);

        // Step7:执行代码生成操作
        mpg.execute();
    }

三、效果

在这里插入图片描述

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

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

相关文章

axi_quad_spi

文章目录 系统框图正常模式XIP模式 性能IP 核配置AXI Interface OptionXIP ModePerformance Mode SPI OptionsModeTransaction WidthFrequency RatioSlave DeviceEnable Master ModeEnable STARTUP Primitive 寄存器映射0x40 (SRR) 软件复位0x60 (SPICR) SPI控制0x64 (SPISR) S…

WAF攻防相关知识点总结2-代码免杀绕过

WAF的检测除了有对于非正常的流量检测外还对于非正常的数据包特征进行检测 以宝塔为例 在宝塔的后台可以放置一句话木马的文件 宝塔不会对于这个文件进行拦截&#xff0c;但是一旦我们使用菜刀蚁剑等webshell工具去进行连接的时候&#xff0c;数据报中有流量特征就会被拦截 …

【仿网易云H5部署】Nodejs后台 + uniapp前台 部署

前言 之前在b站跟着学习写了前锋的<仿网易云音乐>uniapp项目 , 在这里记录一下H5版本的部署上线的过程. 这是该项目的b站链接:【千锋教育】前端项目_uni-app入门到实战项目之《仿网易云音乐》_哔哩哔哩_bilibili 一.后端 使用宝塔面板来部署 (1) 百度搜索宝塔面板, 复…

Java中的this和super

①this 在Java中&#xff0c;this关键字代表当前对象的引用。它可以用于以下几个方面&#xff1a; 引用当前对象的成员变量&#xff1a;使用this关键字可以引用当前对象的成员变量&#xff0c;以区分成员变量和方法参数或局部变量之间的命名冲突。例如&#xff0c;如果一个方法…

微信小程序wx.getRealtimeLogManager无法查看log内容

解决方案&#xff1a; 首先&#xff0c;检查在we分析是否启用实时日志&#xff0c;入口如下&#xff1a; 其次&#xff0c;检查基本语法是否正确&#xff0c;参考如下&#xff1a; var logger wx.getRealtimeLogManager() logger.error("error message") 最后&a…

基于若依的ruoyi-nbcio流程管理系统一种简单的动态表单模拟测试实现(四)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

《Linux高性能服务器编程》笔记04

Linux高性能服务器编程 本文是读书笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考 Linux高性能服务器编程源码: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服务器编程 文章目录 Linux高性能服务器编程第09章I/O复用9.1 select系统调用9.2 po…

C++ | 六、栈 Stack、队列 Queue

栈的基础知识 栈&#xff08;stack&#xff09;是一种数据结构&#xff0c;在C中属于STL&#xff08;标准库&#xff09;特点&#xff1a;先进后出 栈的使用&#xff1a; 一、引入头文件<stack>二、创建栈变量&#xff08;类似容器、集合的创建方式&#xff09;&#xf…

【心得】java从CC1链入门CC链个人笔记

来劲了&#xff0c;感觉离真正的CTF又近了一步。 本文仅从一个萌新的角度去谈&#xff0c;如有纰漏&#xff0c;纯属蒟蒻。 目录 CC链概念 CC链学习前置知识 CC1链 Version1 Version2 Version3 CC链概念 CC链 Commons Collections apache组织发布的开源库 里面主要对…

JS之打地鼠案例

需要素材的同学可以私信我 效果图&#xff1a; 上代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}.box {position: relative;width: 320px;heigh…

论文阅读:Vary-toy论文阅读笔记

目录 引言整体结构图方法介绍训练vision vocabulary阶段PDF数据目标检测数据 训练Vary-toy阶段Vary-toy结构数据集情况 引言 论文&#xff1a;Small Language Model Meets with Reinforced Vision Vocabulary Paper | Github | Demo 说来也巧&#xff0c;之前在写论文阅读&…

更新至2023年各省环境规制数据合集(七种测算方法)

更新至2023年各省环境规制数据合集&#xff08;七种测算方法&#xff09; 一、2002-2023年全国各省ZF报告词频环境规制关键词词频统计数据 1、时间&#xff1a;2001-2022年 2、指标&#xff1a;文本总长度、仅中英文-文本总长度、文本总词频-全模式、文本总词频-精确模式、环…

计算机中找不到vcomp140.dll无法继续执行代码有哪些解决方法

vcomp140.dll是微软Visual C编译器的一个组件&#xff0c;主要用于支持并行计算和OpenMP库的实现。以下是这个DLL文件的属性介绍&#xff1a; 文件名&#xff1a;vcomp140.dll 这个文件名中的“140”指的是与Visual C的版本相对应的内部版本号&#xff0c;这里对应的是2015版…

聚焦AI4S,产学研专家齐聚,探讨AI工具在多领域应用的现状与趋势

2023 和鲸社区年度科研闭门会以“对话 AI for Science 先行者&#xff0c;如何抓住科研范式新机遇”为主题&#xff0c;邀请了多个领域的专家学者共同探讨人工智能在各自领域的发展现状与未来趋势。 闭门会圆桌论坛由和鲸科技联合创始人、执行总裁兼首席产品官殷自强主持&…

Linux之快速入门(CentOS 7)

文章目录 一、Linux目录结构二、常用命令2.1 切换用户2.2查看ip地址2.3 cd2.4 目录查看2.5 查看文件内容2.6 创建目录及文件2.7 复制和移动2.8 其他2.9 tar3.0 which3.1 whereis3.2 find&#xff08;这个命令尽量在少量用户使用此软件时运行&#xff0c;因为此命令是真的读磁盘…

ifconfig 主机ip url记录

ifconfig 容器Pods相关主机与url信息 一文搞懂网络知识&#xff0c;IP、子网掩码、网关、DNS、端口号_关于ip,网关。端口-CSDN博客 计算机网络知识之URL、IP、子网掩码、端口号_ip地址和url-CSDN博客 阅读看下以上文章 由此可知 1.主机ip 10.129.22.124 10.129.22 是网段…

线程池高手进阶:揭秘ThreadPoolExecutor的小妙招!

RejectedExecutionHandler总结 ThreadPoolExecutor 是 Java 中用于创建和管理线程池的接口&#xff0c;当线程池中的任务队列已满&#xff0c;并且线程池中的线程数量已经达到最大时&#xff0c;如果再有新的任务提交&#xff0c;就需要一个策略来处理这些无法执行的任务。它 …

c++ 截图GetWindowDC,并保存到文件夹下---手把手教

工作中遇到一个需求&#xff0c;需要在用户操作过后&#xff0c;需要截图来确认用户操作过后&#xff0c;真实的呈现结果&#xff0c;用来后期验证 直接上代码 直接使用&#xff0c;修改自己需要捕获的窗口名字就可以了 OnBnClickedBtUpimage(){CString strPathTmp;GetAppPath…

2024年 IT 行业就业情况能否回春?很多人说道…

我只能说可以&#xff0c;以前我是看不到的。但是鸿蒙全栈自研让我重新看到希望&#xff01; 2024年1月18日&#xff0c;华为鸿蒙千帆启航发布会。讲到HarmonyOS NEXT作为原生鸿蒙&#xff0c;其系统底座全栈自研&#xff0c;去掉了传统的AOSP 代码&#xff08;“Android 开放…

基于变异混合蛙跳算法的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 车间调度问题&#xff08;JSSP&#xff09;描述 4.2 蛙跳算法&#xff08;SFLA&#xff09;基本原理 4.2.1 初始化 4.2.2 局部搜索 4.2.3 全局信息交换 4.2.4 变异策略 4.2.5 终止…