springBoot --- mybatisPlus自动生成代码

mybatisPlus自动生成代码

  • mybatisPlus自动生成代码
    • pom.xml
    • application.yml
    • 自动生成代码测试
    • 主启动类
    • 生成目录结果
  • 使用插件 --- 版本要求:3.4.0 版本以上
    • pom.xml更新mybatisplus插件版本
    • mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.generator.AutoGenerator‘
    • 项目目录
    • 分页插件 版本要求:3.4.0 版本以上

mybatisPlus自动生成代码

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hrf</groupId>
    <artifactId>blog</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>blog</name>
    <description>blog</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        <!--        mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!--        MP代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.0</version>
        </dependency>

        <!--freemarker模板引擎-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai
    username: root
    password: "0429"

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启SQL语句打印
#  global-config:
#    db-config:
#      id-type: auto  #  配置了全局采用自增主键策略

自动生成代码测试

package com.hrf.blog.generator;

import com.baomidou.mybatisplus.annotation.DbType;
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.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.jupiter.api.Test;

public class GeneratorTest {
    @Test
    public void generate() {


        AutoGenerator generator = new AutoGenerator();

        //1. 全局配置
        GlobalConfig config = new GlobalConfig();
        //  获取用户程序当前路径
        String projectPath = System.getProperty("user.dir");
        // 设置输出到的目录
        config.setOutputDir(projectPath + "/src/main/java");
        config.setAuthor("hrf");
        // 生成结束后是否打开文件夹
        config.setOpen(true);
        //  是否覆盖已有文件
        config.setFileOverride(true);
        // 全局配置添加到 generator 上
        generator.setGlobalConfig(config);

        //2. 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        //  数据库类型
//        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("0429");

        // 数据源配置添加到 generator代码生成器主类
        generator.setDataSource(dataSourceConfig);

        //3. 包配置, 生成的代码放在哪个包下
        PackageConfig packageConfig = new PackageConfig();

//        packageConfig.setModuleName("module");// 父包模块名
        packageConfig.setParent("com.hrf.blog");// 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
        packageConfig.setService("service");// Service包名
        packageConfig.setEntity("entity");// Entity包名
        packageConfig.setServiceImpl("service.impl");// ServiceImpl包名
        packageConfig.setMapper("mapper");// Mapper包名
        packageConfig.setController("controller");// Contoller包名
        packageConfig.setXml("mapper.xml");// Mapper.xml包名
        // 包配置添加到 generator
        generator.setPackageInfo(packageConfig);

        //4. 策略配置 数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表等信息,
        StrategyConfig strategyConfig = new StrategyConfig();
        // 下划线驼峰命名转换
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        // 自定义继承类全称,带包名 (以下为示例)
//        strategyConfig.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
//        strategyConfig.setSuperControllerClass("com.baomidou.ant.common.BaseController");
        strategyConfig.setEntityLombokModel(true);// 【实体】是否为lombok模型(默认 false)
        strategyConfig.setRestControllerStyle(true);// 生成 @RestController 控制器
        strategyConfig.setSuperEntityColumns("id");// 写于父类中的公共字段
//        strategyConfig.setInclude("fnd_user");// 需要包含的表名,允许正则表达式(与exclude二选一配置)
//        strategyConfig.setExclude("m_fnd_user1");// 需要排除的表名,允许正则表达式
        strategyConfig.setControllerMappingHyphenStyle(true);// 驼峰转连字符
        strategyConfig.setEntityTableFieldAnnotationEnable(true);// 是否生成实体时,生成字段注解 默认false;
        // 把策略配置添加到代码生成器主类
        generator.setStrategy(strategyConfig);

//   5. 向代码生成器主类上配置模板引擎,这是是freemarker,mpg.execute()方法就是执行生成代码类。
        generator.setTemplateEngine(new FreemarkerTemplateEngine());
        // 开始生成
        generator.execute();
    }
}

主启动类

package com.hrf.blog;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.hrf.blog.mapper")//扫描包
public class BlogApplication {

    public static void main(String[] args) {
        SpringApplication.run(BlogApplication.class, args);
    }


}

生成目录结果

生成目录

参考地址MyBatis-Plus

使用插件 — 版本要求:3.4.0 版本以上

pom.xml更新mybatisplus插件版本

 <!--        mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3</version>
        </dependency>
        <!--        MP代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3</version>
        </dependency>

mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.generator.AutoGenerator‘

产生原因:新版本中对象已经私有化。
解决方法:使用新的代码生成器

 @Test
    public void generate(){
        //  获取用户程序当前路径
        String projectPath = System.getProperty("user.dir");
        // 设置输出到的目录
        String out = projectPath + "/src/main/java";
//        设置mapper.xml生成路径
        String xmlOut = projectPath + "/src/main/java/com/hrf/blog/user/mapper/xml";

        FastAutoGenerator.create("jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai", "root", "0429")
                .globalConfig(builder -> {
                    builder.author("hrf") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(out); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.hrf.blog.user") // 设置父包名
//                            .moduleName("blogUser") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, xmlOut)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder
//                            .addInclude("t_simple") // 设置需要生成的表名
                            .addTablePrefix("blog_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }

项目目录

在这里插入图片描述

分页插件 版本要求:3.4.0 版本以上

package com.hrf.blog.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.hrf.blog.mapper")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

//    @Bean
//    public ConfigurationCustomizer configurationCustomizer() {
//        return configuration -> configuration.setUseDeprecatedExecutor(false);
//    }
}

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

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

相关文章

Linux系统中使任务后台挂起不停止的命令

在使用远程SSH连接工具时&#xff0c;退出工具时任务也停止&#xff0c;相当于远程连接工具在系统开启了一个Terminal终端&#xff0c;服务也会随着终端的中断而停止。Linux系统也提供了服务基于后台运行的命令&#xff0c;是独立于终端的进程。 nohup Linux nohup Linux no…

【Python】仅7行代码实现自动化天气报时

文章目录前言一、实现步骤二、请求天气接口1.引入库2.读入数据3.钉钉通知天气预报总结前言 早上出门上班前&#xff0c;我总是忘记查看天气预报&#xff0c;以至于通勤路上下雨来了个措手不及。 回想起来&#xff0c;大部分人早上出门前的行为模式是固定的&#xff0c;那么有…

一个基于stream的EPICS IOC应用程序

本文将介绍如何开发一个基于stream的EPICS IOC应用程序&#xff0c;其将作为一个简单的基于消息的设备&#xff08;用于EPICS stream练习的设备模拟程序_yuyuyuliang00的博客-CSDN博客中最后一个python程序模拟的设备)的IOC控制程序。 1&#xff09; 按如下步骤建立这个IOC程序…

vb+access大气污染模型系统

数据模型就是按专业的要求&#xff0c;用数字方式描述自然界的事物或现象以及他们的关系。 我们通过对地区的具体数值和情况的观察&#xff0c;对大气质量状况做出分析&#xff0c;建立一个符合当地情况的大气污染模型&#xff0c;用来测量大气污染浓度&#xff0c;并根据污染…

在公司兢兢业业5年,被新来的自动化测试倒挂了薪资…

去年年中朋友左思右想从工作了 5 年的企业离职&#xff0c;离职原因很简单&#xff0c;待疲了&#xff0c;薪资也没咋涨过&#xff0c;新来的自动化测试钱比 Ta 高一倍。但离职 Ta 还是很忐忑的&#xff0c;在这个公司待得久了&#xff0c;自己会的东西一直是那些&#xff0c;业…

Python3爬虫图片抓取

在上一章中&#xff0c;我们已经学会了如何使用Python3爬虫抓取文字&#xff0c;那么在本章教程中&#xff0c;将通过实例来教大家如何使用Python3爬虫批量抓取图片。注&#xff1a;该网站目前已经更换了图片的请求方式&#xff0c;以下爬虫方法只能作为思路参考&#xff0c;已…

【Linux】进程理解与学习-程序替换

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅 相关文章推荐&#xff1a; 【Linux】冯.诺依曼体系结构与操作系统 【Linux】进程理解与学习Ⅰ-进程概念 【Linux】进程理解与学习Ⅱ-进程状态 【Linux】进程理解与学…

想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗

总结了一份Java架构师的技能树&#xff0c;希望对Java编程的同学有点帮助 Java编程的技术点&#xff1a; ​ 计算机基础 ​ Java高级特性 设计模式 ​ 数据库 分布式系统 ​ 注意&#xff1a;下文主要是我个人的总结方法经验&#xff08;面试学习和刷题笔记&#xff09; 01…

aws codedeploy 在ec2实例和autoscaling组上进行蓝绿部署

参考资料 https://docs.amazonaws.cn/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.htmlhttps://docs.amazonaws.cn/zh_cn/codedeploy/latest/userguide/applications.html为 EC2/本地蓝/绿部署创建部署组&#xff08;控制台&#xff09; 部署ec2比较…

面试角度看问题:消息队列详解(万字长文,绝对值得一看)

面试角度看问题&#xff1a;消息队列详解前言一、消息队列是什么&#xff1f;二、为什么要使用消息队列&#xff1f;1.解耦2.异步3.削峰三、消息队列有什么缺点&#xff1f;1.系统可用性降低2.系统复杂度提高3.一致性问题四、如何保证消息队列的高可用&#xff1f;1.RabbitMQ 的…

zookeeper

目录 1.软件架构的发展 2.了解zookeeper 2.1概述 2.2zookeeper的应用场景 2.3安装zookeeper 2.4zookeeper客户端命令 3.zookeeper简单操作 3.1zookeeper的数据结构 3.2节点的分类 3.3java代码操作zookeeper节点 3.4zookeeper的watch机制 3.4.1介绍 3.4.2NodeCache…

ERD Online 4.0.11 在线数据库建模、元数据协作平台(免费、私有部署)

ERD Online 是全球第一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL查询等功能&#xff0c;辅以版本、导入、导出、数据源、SQL解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。 4.0.11 ❝ :memo: fix(erd):…

5亿融资与重磅新品双发布,杉数以智能决策技术变革中国产业运营模式

2023年3月30日&#xff0c;由杉数科技举办的“智能决策重塑增长”2023杉数科技智能决策前沿峰会在北京举行。会上发布了杉数新一轮融资消息&#xff0c;同时&#xff0c;面向零售快消的决策优化产品计划宇宙&#xff08;Planiverse&#xff09;与面向工业制造的决策优化产品数弈…

Flink (四) --------- Flink 运行时架构

目录一、系统架构1. 整体构成2. 作业管理器&#xff08;JobManager&#xff09;3. 任务管理器&#xff08;TaskManager&#xff09;二、作业提交流程1. 高层级抽象视角2. 独立模式&#xff08;Standalone&#xff09;3. YARN 集群三、 一些重要概念1. 数据流图&#xff08;Data…

C的实用笔记36——几种常用的字符串处理API(一)

0、const关键字 1、知识点&#xff1a;const是与存储相关的关键字&#xff0c;用作常量声明&#xff0c;修饰普通变量和指针变量&#xff0c;表示只读。const修饰普通变量&#xff1a;&#xff0c;修饰后变量从可修改的左值变成不可修改的左值 const修饰指针变量&#xff1a;分…

redis源码解析(四)——ziplist

版本&#xff1a;redis - 5.0.4 参考资料&#xff1a;redis设计与实现 文件&#xff1a;src下的ziplist.c ziplist.h 一、基础知识1、压缩列表的各个组成部分及详细说明2、列表节点3、encoding二、连锁更新三、ziplist.hquickList一、基础知识 压缩列表是Redis为了节约内存而开…

陌生人社交软件如何破冰?

据艾媒咨询的数据显示&#xff0c;2020年中国移动社交用户规模已达9.24亿人&#xff0c;预计2022年中国移动社交用户整体突破10亿人。而早在2020年&#xff0c;我国陌生人社交用户规模已经达到了6.49亿人&#xff0c;虽然增速有所放缓&#xff0c;但整体规模还是较为庞大。 艾媒…

操作系统笔记——进程管理

操作系统笔记——进程管理2. 进程管理2.1 进程与线程2.1.1 进程的引入前趋图程序的顺序执行程序的并发执行2.1.2 进程的定义及描述进程的定义进程的特征进程和程序的关系进程与作业的区别进程的组成2.1.3 进程的状态与转换进程的5种基本状态进程的状态的相互转换2.1.4 进程的控…

java常见锁策略分享(包括cas和synchronized的优化)

前言 锁策略学习思维导图: 1.常见锁策略 ① 乐观锁和悲观锁 ● 它们是根据锁冲突的预测,如果预测锁冲突比较小,那就是乐观锁,反之,就是悲观锁. ● 举个例子:高考前夕,我总觉得高考题会很难,然后拼命做各种科目的题,全副武装的去应对高考,而我妈则觉得高考只是人生的一个阶段而…

PCB模块化设计04——USB-Type-C PCB布局布线设计规范

目录PCB模块化设计04——USB-Type-C PCB布局布线设计规范USB Type-C功能介绍信号图示Type-C接口引脚定义USB 2.0差分对电源和接地引脚RX和TX引脚CC1和CC2针脚VCONN引脚SBU1和SBU2针脚USB供电PCB设计布线要求PCB模块化设计04——USB-Type-C PCB布局布线设计规范 USB Type-C US…