利用springboot + mybatis-plus 代码自动生成器快速搭建后端框架
项目环境
- IDEA 2020
- springboot 2.3.7.RELEASE
- mybatis-plus 3.5.1
- JDK 1.8
操作步骤
一、代码生成器
1. 创建简单的springboot项目,一直next即可
2. 引入mybatis-plus代码生成器
- 添加Maven依赖 注意去掉与原来重复的依赖
<!--SpringBoot通用依赖模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!--mybatis-plus代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!-- freemarker模板 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--Swagger-UI API文档生产工具-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!--解决Swagger 2.9.2版本NumberFormatException-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.0</version>
</dependency>
- 创建代码生成器文件,修改文件中的数据库用户名及密码,包路径等 (注意包名文件名与自己创建的对应)
这里只是用了一些基本配置,更多配置请看https://baomidou.com/pages
package com.example.demo.generator;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
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 java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
/**
* mybatis-plus代码生成器
*
* @author fzshuai
* @date 2022/03/13 16:45
* @since 1.0
*/
public class MyBatisPlusGenerator {
//修改为你自己的数据库地址
private static final String datasourceUrl = "jdbc:mysql://localhost:3306/devicemanage?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
//修改为你自己的数据库账号
private static final String datasourceUsername = "root";
//修改为你自己的数据库密码
private static final String datasourcePassword = "root";
public static void main(String[] args) {
// 项目路径
String projectPath = System.getProperty("user.dir");
// 代码生成器
FastAutoGenerator.create(datasourceUrl, datasourceUsername, datasourcePassword)
// 全局配置
.globalConfig(initGlobalConfig(projectPath))
.packageConfig(initPackageConfig(projectPath))
.strategyConfig(initStrategyConfig())
// 使用Freemarker引擎模板,默认的是Velocity引擎模板
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
/**
* 初始化全局配置
*/
private static Consumer<GlobalConfig.Builder> initGlobalConfig(String projectPath) {
return builder -> {
// 作者
builder.author("pengmq")
// 输出路径
.outputDir(projectPath + "/src/main/java")
// 禁止打开输出目录
.disableOpenDir()
// 开启swagger
.enableSwagger()
// 注释日期
.commentDate("yyyy/MM/dd HH:mm")
// 开启覆盖之前生成的文件
.fileOverride();
};
}
/**
* 初始化包配置
*/
private static Consumer<PackageConfig.Builder> initPackageConfig(String projectPath) {
return builder -> {
builder.parent("com.example.demo") //生成文件的父包
.entity("model")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.mapper("mapper")
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper/"));
};
}
/**
* 初始化策略配置
*/
private static BiConsumer<Function<String, String>, StrategyConfig.Builder> initStrategyConfig() {
return (scanner, builder) -> {
builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
// 增加过滤表前缀
//.addTablePrefix("t_")
// service策略配置
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
// entity策略配置
.entityBuilder()
// 数据库表映射到实体的命名策略
.naming(NamingStrategy.underline_to_camel)
// 数据库表字段映射到实体的命名策略
.columnNaming(NamingStrategy.no_change)
// 开启lombok模型
.enableLombok()
// controller策略设置
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle()
.enableHyphenStyle()
// mapper策略设置
.mapperBuilder()
// 生成通用的resultMap
.enableBaseResultMap()
.enableBaseColumnList()
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper");
};
}
}
- 运行main方法
- 按照指引输入要生成代码对应的表 (数据库中的表名)
- 此时就生成成功啦!可以看到目录中已经多出了生成的文件,其中生成mapper文件和service文件继承了mybatisplus的接口类,这两个类聚合了一些单表的增删改查等基本操作,用起来还是很方便哒!
用法:mybatisplusa官方文档
进阶推荐:springboot+JWT+redis实现token身份令牌验证(附代码)(超详细)
进阶推荐:springboot整合swagger2,高效制作漂亮整洁的接口文档必备(附代码)