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

利用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");
        };
    }


}

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值