mybatis-plus专题(二)代码生成器

mybatis-plus generator 自动生成实体类,mapper以及service

1.pom.xml

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
            <version>3.3.2</version>
            <optional>true</optional>
        </dependency>

2.生成的main方法

package com.aifun.app.database;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class GeneratorMySQL {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String dbUsername = "root"; // 数据库账号
        String dbPassword = "root123"; // 数据库账号
        String dbUrl = "jdbc:mysql://123.56.52.56:3306/area?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull"; // 数据库地址
        // 数据库驱动名称( mysql-connector-java 5版本)
        // String dbDriverClassName = "com.mysql.jdbc.Driver";
        // 数据库驱动名称(mysql-connector-java 6版本,用于MySQL 8.0以上,dbUrl需要加时区)
        String dbDriverClassName = "com.mysql.cj.jdbc.Driver";
        final String projectPath = System.getProperty("user.dir"); // 获取当前开发路径
        // File file = new File(GeneratorMybatisPlus.class.getResource("/").getPath());
        // String projectPath = file.getPath().replace("\\target\\classes","");
        // 获取项目包根目录
        // System.out.println(f.getPath().replace("\\target\\classes",""));
        final String packName = "com.kaile";
        System.out.println("projectPath:" + projectPath);
        createIdAuto(projectPath, packName, dbUsername, dbPassword, dbUrl, dbDriverClassName);
        createIdInput(projectPath, packName, dbUsername, dbPassword, dbUrl, dbDriverClassName);

    }

    // 自增类型的表生成
    public static void createIdAuto(String projectPath, String packName, String dbUsername, String dbPassword, String dbUrl,
                                    String dbDriverClassName) {
        // 代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();

        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(projectPath + "/src/main/java"); // 输出的路径
        globalConfig.setAuthor("author"); // 作者
        globalConfig.setServiceName("%sService"); // 自定义service接口的生成名称
        globalConfig.setOpen(false); // 生成结束后打开路径
        // globalConfig.setEnableCache(false); // 关二级缓存
        //globalConfig.setBaseResultMap(true); // mapper xml文件生成resultMap
        // globalConfig.setBaseColumnList(true); // mapper xml文件生成Columnlist
        globalConfig.setSwagger2(true);     //实体类带swagger注解
        globalConfig.setOpen(false); // 生成结束后是否打开路径
        globalConfig.setIdType(IdType.AUTO); // ID生成策略,不定义的话,生成的实体类ID上没有@tableid
        globalConfig.setDateType(DateType.ONLY_DATE); // 时间类型选择
        globalConfig.setFileOverride(true); // 覆盖已有文件
        autoGenerator.setGlobalConfig(globalConfig);

        // 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUrl(dbUrl);
        dataSourceConfig.setUsername(dbUsername);
        dataSourceConfig.setPassword(dbPassword);
        dataSourceConfig.setDriverName(dbDriverClassName);
        autoGenerator.setDataSource(dataSourceConfig);

        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent(packName); // 在这里,请把project.name改成你自己的项目包名字符串比如:whut.teach.system
        // packageConfig.setEntity("po"); //设置实体类的包名称
        autoGenerator.setPackageInfo(packageConfig);

        // 注入自定义配置
        InjectionConfig injectionConfig = new InjectionConfig() {
            @Override
            public void initMap() {
                Map<String, Object> map = new HashMap<String, Object>();
                this.setMap(map);
            }
        };
        // 调整 mybatis Mapper.xml 生成目录
        List<FileOutConfig> fileOutConfigList = new ArrayList<FileOutConfig>();
        fileOutConfigList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // System.out.println("xml目录:" + dir + "/src/main/resource/mybatis/" +
                // tableInfo.getEntityName() + "Mapper.xml");
                return projectPath + "/src/main/resources/mybatis/" + tableInfo.getEntityName() + "Mapper.xml"; // 调整后的路径
            }
        });
        //injectionConfig.setFileOutConfigList(fileOutConfigList);
        // 不生成mapper.xml的时候注释掉该行
        autoGenerator.setCfg(injectionConfig);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setController(null); // 关闭controller层生成
        // templateConfig.setService(null); //关闭service层生成
        // templateConfig.setServiceImpl(null); //关闭ServiceImpl层生成
        // templateConfig.setMapper(null); //关闭Mapper层生成
        templateConfig.setXml(null); // 关闭默认Mybatis的Mapper.xml生成
        autoGenerator.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 下划线转驼峰命名
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略
        // strategyConfig.setSuperEntityClass("com.lanshan.ant.common.BaseEntity");
        // //定义自己的父实体类(如果有需要的话)
        strategyConfig.setCapitalMode(true); // 是否大写
        // strategyConfig.setEntityLombokModel(true); // 开启为lombok模型(该模型需要IDE装插件才能支持)

        // 设置需要包含的表名,注意和setExclude只能2选1
        String[] includeTableName = {
                "t_user","t_role","t_menu","t_user_role","t_role_menu"                  //玩家用户信息表

        };
        strategyConfig.setInclude(includeTableName);

        // 设置需要排除的表名,注意和setInclude只能2选1
        //String[] excludeTableName = {"user_extend_data"};
        //strategyConfig.setExclude(excludeTableName);

        strategyConfig.setTablePrefix("t_"); //表前缀
        // strategyConfig.setFieldPrefix("filed_"); //字段前缀
        autoGenerator.setStrategy(strategyConfig);
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());

        autoGenerator.execute(); // 开始生成
    }

    // 用户输入主键的表生成
    public static void createIdInput(String projectPath, String packName, String dbUsername, String dbPassword, String dbUrl,
                                     String dbDriverClassName) {
        // 代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();

        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(projectPath + "/src/main/java"); // 输出的路径
        globalConfig.setAuthor("author"); // 作者
        globalConfig.setServiceName("%sService"); // 自定义service接口的生成名称
        globalConfig.setOpen(false); // 生成结束后打开路径
        // globalConfig.setEnableCache(false); // 关二级缓存
        // globalConfig.setBaseResultMap(true); // mapper xml文件生成resultMap
        // globalConfig.setBaseColumnList(true); // mapper xml文件生成Columnlist
        globalConfig.setSwagger2(true);     //实体类带swagger注解
        globalConfig.setOpen(false); // 生成结束后是否打开路径
        globalConfig.setIdType(IdType.INPUT); // ID生成策略,不定义的话,生成的实体类ID上没有@tableid
        globalConfig.setDateType(DateType.ONLY_DATE); // 时间类型选择
        globalConfig.setFileOverride(true); // 覆盖已有文件
        autoGenerator.setGlobalConfig(globalConfig);

        // 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUrl(dbUrl);
        dataSourceConfig.setUsername(dbUsername);
        dataSourceConfig.setPassword(dbPassword);
        dataSourceConfig.setDriverName(dbDriverClassName);
        autoGenerator.setDataSource(dataSourceConfig);

        // 包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent(packName); // 在这里,请把project.name改成你自己的项目包名字符串比如:whut.teach.system
        // packageConfig.setEntity("po"); //设置实体类的包名称
        autoGenerator.setPackageInfo(packageConfig);

        // 注入自定义配置
        InjectionConfig injectionConfig = new InjectionConfig() {
            @Override
            public void initMap() {
                Map<String, Object> map = new HashMap<String, Object>();
                this.setMap(map);
            }
        };
        // 调整 mybatis Mapper.xml 生成目录
        List<FileOutConfig> fileOutConfigList = new ArrayList<FileOutConfig>();
        fileOutConfigList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // System.out.println("xml目录:" + dir + "/src/main/resource/mybatis/" +
                // tableInfo.getEntityName() + "Mapper.xml");
                return projectPath + "/src/main/resources/mybatis/" + tableInfo.getEntityName() + "Mapper.xml"; // 调整后的路径
            }
        });
        // injectionConfig.setFileOutConfigList(fileOutConfigList);
        // //不生成mapper.xml的时候注释掉该行
        autoGenerator.setCfg(injectionConfig);

        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setController(null); // 关闭controller层生成
        // templateConfig.setService(null); //关闭service层生成
        // templateConfig.setServiceImpl(null); //关闭ServiceImpl层生成
        // templateConfig.setMapper(null); //关闭Mapper层生成
        templateConfig.setXml(null); // 关闭默认Mybatis的Mapper.xml生成
        autoGenerator.setTemplate(templateConfig);

        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 下划线转驼峰命名
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略
        // strategyConfig.setSuperEntityClass("com.lanshan.ant.common.BaseEntity");
        // //定义自己的父实体类(如果有需要的话)
        strategyConfig.setCapitalMode(true); // 是否大写
        // strategyConfig.setEntityLombokModel(true); // 开启为lombok模型(该模型需要IDE装插件才能支持)

        // 设置需要包含的表名,注意和setExclude只能2选1
        String[] includeTableName = {"user_extend_data"};
        strategyConfig.setInclude(includeTableName);

        // 设置需要排除的表名,注意和setInclude只能2选1
        // String[] excludeTableName = { "english_words" };
        // strategyConfig.setExclude(excludeTableName);

        strategyConfig.setTablePrefix("t_"); //表前缀
        // strategyConfig.setFieldPrefix("filed_"); //字段前缀
        autoGenerator.setStrategy(strategyConfig);
        autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());

        autoGenerator.execute(); // 开始生成
    }

}

3.还有ftl,代码就不贴了。需要的朋友自己下载,运行即可。很简单方便

不知道怎么放到这里提供下载,有需要的朋友给我发消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值