快速搭建springboot+mybatis-plus代码自动生成器的后端框架

利用springboot + mybatis-plus 代码自动生成器快速搭建后端框架

项目环境

  • IDEA 2020
  • springboot 2.3.7.RELEASE
  • mybatis-plus 3.5.1
  • JDK 1.8

操作步骤

一、代码生成器

1. 创建简单的springboot项目,一直next即可
快速搭建springboot+mybatis-plus代码自动生成器的后端框架_第1张图片
2. 引入mybatis-plus代码生成器

  • 添加Maven依赖 注意去掉与原来重复的依赖

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-aopartifactId>
dependency>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-testartifactId>
    <scope>testscope>
dependency>

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>3.5.1version>
dependency>

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-generatorartifactId>
    <version>3.5.1version>
dependency>

<dependency>
    <groupId>org.freemarkergroupId>
    <artifactId>freemarkerartifactId>
    <version>2.3.31version>
dependency>

<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
    <version>8.0.16version>
dependency>

<dependency>
    <groupId>org.projectlombokgroupId>
    <artifactId>lombokartifactId>
    <optional>trueoptional>
dependency>

<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger2artifactId>
    <version>2.9.2version>
dependency>
<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger-uiartifactId>
    <version>2.9.2version>
dependency>

<dependency>
    <groupId>io.swaggergroupId>
    <artifactId>swagger-modelsartifactId>
    <version>1.6.0version>
dependency>
<dependency>
    <groupId>io.swaggergroupId>
    <artifactId>swagger-annotationsartifactId>
    <version>1.6.0version>
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方法
    快速搭建springboot+mybatis-plus代码自动生成器的后端框架_第2张图片
  • 按照指引输入要生成代码对应的表 (数据库中的表名)
    快速搭建springboot+mybatis-plus代码自动生成器的后端框架_第3张图片
  • 此时就生成成功啦!可以看到目录中已经多出了生成的文件,其中生成mapper文件和service文件继承了mybatisplus的接口类,这两个类聚合了一些单表的增删改查等基本操作,用起来还是很方便哒!
    用法:mybatisplusa官方文档
    快速搭建springboot+mybatis-plus代码自动生成器的后端框架_第4张图片
    进阶推荐:springboot+JWT+redis实现token身份令牌验证(附代码)(超详细)
     
    进阶推荐:springboot整合swagger2,高效制作漂亮整洁的接口文档必备(附代码)

你可能感兴趣的:(java,spring,boot,intellij-idea,后端,mysql)