VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Spring Boot 3 开发上线一个前后端分离的生产级系统(五) - MyBatis-Plus & 代码生成

Mybatis 增强工具 MyBatis-Plus 集成

[MyBatis-Plus] (https://baomidou.com)是一个 MyBatis (https://www.mybatis.org/mybatis-3)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。我们可以按照如下步骤集成到我们的项目中:

  1. 添加 mybatis-plus 的启动器依赖

 
<dependency>
 
<groupId>com.baomidou</groupId>
 
<artifactId>mybatis-plus-boot-starter</artifactId>
 
<version>3.5.1</version>
 
</dependency>
  1. 配置 MapperScan 注解

 
@SpringBootApplication
 
@MapperScan("io.github.xxyopen.novel.dao.mapper")
 
public class NovelApplication {
 
 
 
public static void main(String[] args) {
 
SpringApplication.run(NovelApplication.class, args);
 
}
 
 
 
}
  1. 因为我们系统涉及分页数据查询,所以我们还需要在io.github.xxyopen.novel.core.config包下配置 mybatis-plus 的分页插件:

 
/**
 
* Mybatis-Plus 配置类
 
*
 
* @author xiongxiaoyang
 
* @date 2022/5/16
 
*/
 
@Configuration
 
public class MybatisPlusConfig {
 
 
 
/**
 
* 分页插件
 
*/
 
@Bean
 
public MybatisPlusInterceptor mybatisPlusInterceptor() {
 
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
 
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
 
return interceptor;
 
}
 
 
 
}
  1. 数据源配置

YAML 是 JSON 的超集,一种用于指定分层配置数据的便捷格式。本项目中我们统一使用 YAML 格式的配置文件,所以先将 resources 目录下的 application.properties 文件重命名为 application.yml,

然后在 application.yml 配置文件中加入以下数据源配置:


 
spring:
 
datasource:
 
url: jdbc:mysql://localhost:3306/novel?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
 
username: root
 
password: test123456

注:根据实际的数据库环境来修改相应的IP、端口号、数据库名、用户名和密码

  1. 为了兼容 Spring Boot 3(Spring 6),在org.springframework.core包下创建NestedIOException异常类

 
/**
 
* 兼容 mybatis-plus 3.5.1
 
* mybatis-plus 的 MybatisSqlSessionFactoryBean 中使用到了这个异常
 
* Spring 6 开始移除了该异常
 
*
 
* @author xiongxiaoyang
 
* @date 2022/5/12
 
*/
 
public class NestedIOException extends IOException {
 
 
 
}

代码生成器 Mybatis-Plus-Generator 集成

  1. 添加相关依赖

 
<dependency>
 
<groupId>com.baomidou</groupId>
 
<artifactId>mybatis-plus-generator</artifactId>
 
<version>${mybatis-plus.version}</version>
 
<scope>test</scope>
 
</dependency>
 
<dependency>
 
<groupId>org.apache.velocity</groupId>
 
<artifactId>velocity-engine-core</artifactId>
 
<version>2.3</version>
 
<scope>test</scope>
 
</dependency>
  1. 在 test/resources/templates 下面创建以下模版文件

gen-templates

  1. 在 test/java 下面创建代码生成器类

 
/**
 
* 代码生成器
 
*
 
* @author xiongxiaoyang
 
* @date 2022/5/11
 
*/
 
public class Generator {
 
 
 
private static final String USERNAME = System.getenv().get("USER");
 
 
 
/**
 
* 项目信息
 
*/
 
private static final String PROJECT_PATH = System.getProperty("user.dir");
 
private static final String JAVA_PATH = "/src/main/java";
 
private static final String RESOURCE_PATH = "/src/main/resources";
 
private static final String BASE_PACKAGE = "io.github.xxyopen.novel";
 
 
 
/**
 
* 数据库信息
 
*/
 
private static final String DATABASE_IP = "127.0.0.1";
 
private static final String DATABASE_PORT = "3306";
 
private static final String DATABASE_NAME = "novel";
 
private static final String DATABASE_USERNAME = "root";
 
private static final String DATABASE_PASSWORD = "test123456";
 
 
 
 
 
public static void main(String[] args) {
 
 
 
// 传入需要生成的表名,多个用英文逗号分隔,所有用 all 表示
 
genCode("sys_user");
 
 
 
}
 
 
 
 
 
/**
 
* 代码生成
 
*/
 
private static void genCode(String tables) {
 
 
 
// 全局配置
 
FastAutoGenerator.create(String.format("jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", DATABASE_IP, DATABASE_PORT, DATABASE_NAME), DATABASE_USERNAME, DATABASE_PASSWORD)
 
.globalConfig(builder -> {
 
builder.author(USERNAME) // 设置作者
 
.fileOverride()
 
// kotlin
 
//.enableSwagger() // 开启 swagger 模式
 
.fileOverride() // 覆盖已生成文件
 
.commentDate("yyyy/MM/dd")
 
.outputDir(PROJECT_PATH + JAVA_PATH); // 指定输出目录
 
})
 
// 包配置
 
.packageConfig(builder -> builder.parent(BASE_PACKAGE) // 设置父包名
 
.entity("dao.entity")
 
.service("service")
 
.serviceImpl("service.impl")
 
.mapper("dao.mapper")
 
.controller("controller.front")
 
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, PROJECT_PATH + RESOURCE_PATH + "/mapper")))
 
// 模版配置
 
.templateConfig(builder -> builder.disable(TemplateType.SERVICE)
 
.disable(TemplateType.SERVICEIMPL)
 
.disable(TemplateType.CONTROLLER))
 
// 策略配置
 
.strategyConfig(builder -> builder.addInclude(getTables(tables)) // 设置需要生成的表名
 
.controllerBuilder()
 
.enableRestStyle()
 
.serviceBuilder()
 
.formatServiceFileName("%sService")
 
) // 开启生成@RestController 控制器
 
//.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
 
.execute();
 
 
 
}
 
 
 
/**
 
* 处理 all 和多表情况
 
*/
 
protected static List<String> getTables(String tables) {
 
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
 
}
 
 
 
}
  1. 修改 Generator 类中数据库相关配置,选择我们需要创建的表名(all),运行 main 方法生成代码
原文链接:https://www.cnblogs.com/xxyopen/p/16322772.html

相关教程