【kalre 日常】MybatisPlus组件自动代码生成脚本

发布于:2024-05-07 ⋅ 阅读:(19) ⋅ 点赞:(0)

引用

        <!-- mybatis-plus依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!-- mybatis-plus代码生成 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!-- 以上两个依赖版本号要一致 -->
        <!-- MyBatis-Plus模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

自动生成脚本,修改变量即可,表名需要运行main方法后控制台录入

package com.disk.sys;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.apache.commons.lang3.StringUtils;

import java.util.Scanner;

public class GeneratorServiceEntity {

    private static String projectPath = System.getProperty("user.dir");
    // 数据库用户名,默认为root
    private static String dbUsername = "root";
    // 数据库密码,默认为root
    private static String dbPassword = "123456";
    // 作者名称,默认为当前用户名
    private static String authorName = "karle";
    // 项目包名
    private static String packageName = "com.disk.sys";
    // 数据库链接
    private static String dbUrl = "jdbc:mysql://localhost:3306/disk_sys?useUnicode=true&useSSL=false&characterEncoding=utf8";

    public static void main(String[] args) {

        boolean serviceNameStartWithI = false;//user -> UserService 设置成true: user -> IUserService
        generateByTables(serviceNameStartWithI, packageName, "sysInfo"); /* 【必填】添加要生成的表可多个 */

    }


    private static void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
        GlobalConfig config = new GlobalConfig();
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(dbUrl)
                .setUsername(dbUsername)    /* 【必填】账号 */
                .setPassword(dbPassword)  /* 【必填】密码 */
                .setDriverName("com.mysql.cj.jdbc.Driver");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setCapitalMode(true)
                .setEntityLombokModel(true) // 实体是否为lombok模型(默认 false)
                .setNaming(NamingStrategy.underline_to_camel)	// 命名法转换
                .setInclude(scanner("表名,多个英文逗号分割").split(","));
        config.setActiveRecord(false)
                .setAuthor(authorName)
                .setOutputDir(projectPath + "/src/main/java")
                .setFileOverride(true);
        if (!serviceNameStartWithI) {
            config.setServiceName("%sService");
        }
        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()		/* 【选填】在这里可以修改生成各层的包名 */
                                .setParent(packageName)
                                .setController("controller")
                                .setEntity("entity")
                ).execute();
    }

    private void generateByTables(String packageName, String... tableNames) {
        generateByTables(true, packageName, tableNames);
    }

    // 扫描器方法,用于在运行时获取用户输入
    private static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }
}