【Spring Boot】Mybatis Plus 3.1.X 自动生成代码配置

2024-08-25 18:18

本文主要是介绍【Spring Boot】Mybatis Plus 3.1.X 自动生成代码配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【引言】

    在前面的spring boot与mybatis plus 集成的相关博客中,用的是2.x的版本,而mybatis plus已经发布3.1.x版本,所以,参照着官方文档,将集成spring boot应用,实践下代码自动生成。

【核心源码】

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

    生成的核心方法是execute,源代码如下:

public void execute() {logger.debug("==========================准备生成文件...==========================");if (null == this.config) {this.config = new ConfigBuilder(this.packageInfo, this.dataSource, this.strategy, this.template, this.globalConfig);if (null != this.injectionConfig) {this.injectionConfig.setConfig(this.config);}}if (null == this.templateEngine) {this.templateEngine = new VelocityTemplateEngine();}this.templateEngine.init(this.pretreatmentConfigBuilder(this.config)).mkdirs().batchOutput().open();logger.debug("==========================文件生成完成!!!==========================");
}

     代码生成主要配置以下几项即可:

// 数据源配置
private DataSourceConfig dataSource;
// 策略配置
private StrategyConfig strategy;
// 包配置
private PackageConfig packageInfo;
// 模板配置
private TemplateConfig template;
// 全局配置
private GlobalConfig globalConfig;

【实现步骤】

    1. 添加依赖

    MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:

<!-- 代码生成配置 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.1.1</version>
</dependency>
<!-- spring boot 与 mybatis plus 集成starter -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version>
</dependency><!-- 模板引擎 -->
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version>
</dependency>

    2. 全局配置

// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
// 配置代码输出目录
gc.setOutputDir(projectPath + "/src/main/java");
// 配置作者
gc.setAuthor("huzhiting");
gc.setOpen(false);
// gc.setSwagger2(true); 实体属性 Swagger2 注解

    3. 数据源配置

// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/demo?useUnicode=true&useSSL=false&characterEncoding=utf8");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");

    4. 包配置

// 包配置
PackageConfig pc = new PackageConfig();
//pc.setModuleName(scanner("模块名"));
pc.setParent("com.example.mybatisplus");
mpg.setPackageInfo(pc);

    上述代码中如果设置模块名,则生成的代码是按模块分的;结构如下:

src
└── main├── java│   └── com│       └── example│               └── mybatisplus│               ├── Application.java│               ├── region│               │   └── controller│               │       ├── RegionController.java│               │   └── service│               │       └── impl│               │          ├── RegionServiceImpl.java│               │       ├── IRegionService.java│               │   └── mapper│               │       ├── RegionMapper.java│               │   └── entity│               │       ├── Region.java│               ├── user│               │   └── controller│               │       ├── UserController.java│               │   └── service│               │       └── impl│               │          ├── UserServiceImpl.java│               │       ├── IUserService.java│               │   └── mapper│               │       ├── UserMapper.java│               │   └── entity│               │       ├── User.java└── resources├── application.properties└── mapper├── region│   └── RegionMapper.xml├── user│   └── UserMapper.xml

    不设置则是各个模块的各层代码在同一个包下,结构如下:

src
└── main├── java│   └── com│       └── example│               └── mybatisplus│               ├── Application.java│               ├── controller│               │   └── RegionController.java│               │   └── UserController.java│               ├── service│               │   ├── impl.java│               │       └── RegionServiceImpl.java│               │       └── UserServiceImpl.java│               │   └── IRegionService.java│               │   └── IUserService.java│               ├── mapper│               │   └──  RegionMapper.java│               │   └──  UserMapper.java│               ├──  entity│               │   └──  Region.java│               │   └──  User.java└── resources├── application.properties└── mapper└── RegionMapper.xml└── UserMapper.xml

    通过以上包配置,便可根据以往的项目习惯自行配置项目目录结构。

    5. 策略配置

// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 命名规则
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//strategy.setSuperEntityClass("com.example.mybatisplus.common.BaseEntity");
// 实体是否使用Lombok插件
strategy.setEntityLombokModel(true);
// 控制层是否使用Rest风格
strategy.setRestControllerStyle(true);
//strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
strategy.setInclude(scanner("表名").split(","));
strategy.setSuperEntityColumns("id");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");

    通过以上添加依赖和相关配置的所有步骤,便可成功自动生成代码,控制台打印信息如下:
在这里插入图片描述
    生成的代码在项目中的目录结构如下:
在这里插入图片描述

    完整代码以上传至github,地址如下:

        https://github.com/huzhiting/spring-boot-mybatisplus-3.1.x

【总结】

    最近接触的新项目用的是3.1.x版本,在使用自动生成代码一套东西发现和之前自己使用2.x版本有所不同,所以想自己动手实践一把。过程中没有遇到什么错误,依照着文档很顺利完成了,也算是又一次丰富了自己的知识积累。

这篇关于【Spring Boot】Mybatis Plus 3.1.X 自动生成代码配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106292

相关文章

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B