栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis-plus代码生成器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis-plus代码生成器

首先引入依赖pom依赖


    org.springframework.boot
    spring-boot-starter-freemarker

    com.baomidou
    mybatis-plus-generator
    3.4.1

代码如下

工具类

直接上代码

package com.zt.auth.generator;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.commons.lang3.StringUtils;

import java.util.Scanner;


public class CodeGenerator {

    
    private static final String DATA_SOURCE_URL = "";
    
    private static final String DATA_SOURCE_USERNAME = "";
    
    private static final String DATA_SOURCE_PASSWORD = "";
    
    private static final String PACKAGE_NAME = "com.*";
    
    private static final String ENTITY = "dao";
    
    private static final String AUTHOR = "";

    
    public 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.isNotEmpty(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }

    public static void main(String[] args) {
        AutoGenerator autoGenerator = new AutoGenerator();

        //获取当前项目最外层的工作目录
        String projectPath = System.getProperty("user.dir");

        //全局配置
        GlobalConfig gc = new GlobalConfig();
        //输出目录(生成的文件会放到这个目录下)
        gc.setOutputDir(projectPath)
                //作者
                .setAuthor(AUTHOR)
                //是否覆盖已有文件
                .setFileOverride(true)
                //是否打开输出目录
                .setOpen(false)
                //开启 swagger2 模式
                .setSwagger2(true)
                //时间类型
                //DateType.ONLY_DATE == java.util.Date;
                //DateType.SQL_PACK == java.sql.Timestamp;;
                //DateType.TIME_PACK == java.time.LocalDateTime;
                .setDateType(DateType.TIME_PACK)
                //生成resultMap
                .setbaseResultMap(true)
                //生成 columnList
                .setbaseColumnList(true)
                //主键策略
                //IdType.AUTO == id自增
                //IdType.NONE == 无状态,该类型为未设置主键类型
                //IdType.INPUT == 手动添加
                //IdType.ASSIGN_ID == 雪花算法
                //IdType.ASSIGN_UUID == 分配UUID
                .setIdType(IdType.AUTO)
                //生成的service接口名字首字母是否为I,这样设置就没有
                .setServiceName("%sService");
        autoGenerator.setGlobalConfig(gc);

        //数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl(DATA_SOURCE_URL)
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUsername(DATA_SOURCE_USERNAME)
                .setPassword(DATA_SOURCE_PASSWORD);
        autoGenerator.setDataSource(dsc);

        //包结构配置
        PackageConfig pc = new PackageConfig();
        //包路径
        pc.setParent(PACKAGE_NAME);
        //实体的包名名
        pc.setEntity(ENTITY);
        //设置模块名(包名)生成的代码会放在这里面
        pc.setModuleName(null);
        autoGenerator.setPackageInfo(pc);

        //数据库表配置
        StrategyConfig sc = new StrategyConfig();
        //NamingStrategy.underline_to_camel == 字段驼峰命名
        //NamingStrategy.no_change == 不做任何改变,原样输出
        //文件名
        sc.setNaming(NamingStrategy.underline_to_camel);
        //字段名
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        //是否使用Lombok
        sc.setEntityLombokModel(true);
        //是否生成实体时,生成字段注解
        sc.setEntityTableFieldAnnotationEnable(true);
        //驼峰转连字符
        sc.setControllerMappingHyphenStyle(true);
        //生成 @RestController 控制器
        sc.setRestControllerStyle(true);
        //控制台输入表名
        String tableName = scanner("输入表名 如 uc_test_table");
        //表名
        sc.setInclude(tableName);
        //有表前缀,如果不想要前缀(放开下面方法)
//        if (tableName.contains("_")){
//            String prefex = tableName.substring(0,tableName.indexOf("_")+1);
//            sc.setTablePrefix(prefex);
//        }
        //实现 ITypeConvert 接口自定义数据库 字段类型 转换为自己需要的 java 类型
        dsc.setTypeConvert(new MySqlTypeConvert(){
            @Override
            public IColumnType processTypeConvert(GlobalConfig config, String fieldType) {
                //将tinyint类型转换为java的Integer(默认是Boolean)
                if(fieldType.toLowerCase().contains("tinyint")){
                    return DbColumnType.INTEGER;
                }
                return super.processTypeConvert(config, fieldType);
            }
        });
        autoGenerator.setStrategy(sc);

        //模板配置
        TemplateConfig templateConfig = new TemplateConfig();
        autoGenerator.setTemplate(templateConfig);
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());

        //执行
        autoGenerator.execute();
    }

}

启动后在控制台输入需要生成的数据库表名:

 

输入表名回车,在你工作目录的根目录生成了文件:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号