MybatisPlus代码生成器(3.5.1 以下版本)

246 阅读2分钟

maven依赖

<!-- mybatis-plus集成依赖包 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.4.1</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.1</version>
</dependency>
<!-- 模板引擎 -->
<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.1</version>
</dependency>
<!--逆向工程需要模板引擎-->
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.28</version>
</dependency>

核心代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
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.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * 代码生成器(旧)
 * 适用版本:mybatis-plus-generator 3.5.1 以下版本,3.5.1 及以上的请参考 代码生成器新
 * 
 * @author system
 *
 */
public class CodeGenerator {

    static String outPutPath = "D:\develop\mybatis-plus-generator";

    public static void main(String[] args) {

        // 1、全局配置
        GlobalConfig globalConfig = new GlobalConfig();// 构建全局配置对象
        //		String projectPath = System.getProperty("user.dir");// 获取当前用户的目录
        globalConfig.setOutputDir(outPutPath + "/src/main/java")// 输出文件路径
        .setAuthor("system")// 设置作者名字
        .setOpen(true)// 是否打开资源管理器
        .setFileOverride(true)// 是否覆盖原来生成的
        .setIdType(IdType.AUTO)// 主键策略
        .setBaseResultMap(true)// 生成resultMap
        .setBaseColumnList(true)// XML中生成基础列
        .setMapperName("%sDao")//设置数据层接口名,%s为占位符,指代模块名称,默认为"%sMapper"
        .setServiceName("%sService");// 生成的service接口名字首字母是否为I,这样设置就没有I

        // 2、数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();// 创建数据源配置
        dataSourceConfig.setUrl(
            "jdbc:mysql://127.0.0.1:3306/test?userSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC")
        .setDriverName("com.mysql.cj.jdbc.Driver").setUsername("root").setPassword("").setDbType(DbType.MYSQL);

        // 3、包配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("cn.mybatisplustest").setEntity("entity").setController("controller").setService("service")
        .setMapper("mapper").setModuleName(scanner("模块名"));

        // 4、策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true)// 开启全局大写命名
        //				.setInclude(tablesStr)// 设置要映射的表
        .setInclude(scanner("表名,多个英文逗号分割").split(","))// 设置要映射的表
        .setNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式
        .setColumnNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式
        .setEntityLombokModel(false)// 是否使用lombok
        .setRestControllerStyle(true)// 是否开启rest风格
        .setControllerMappingHyphenStyle(true);// localhost:8080/hello_a_2

        // 5、自定义配置(配置输出xml文件到resources下)
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        List<FileOutConfig> focList = new ArrayList<>();
        String templatePath = "/templates/mapper.xml.vm";
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return outPutPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper"
                + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);

        // 6、整合配置
        AutoGenerator autoGenerator = new AutoGenerator();// 构建代码生自动成器对象
        autoGenerator.setGlobalConfig(globalConfig)// 将全局配置放到代码生成器对象中
        .setDataSource(dataSourceConfig)// 将数据源配置放到代码生成器对象中
        .setPackageInfo(packageConfig)// 将包配置放到代码生成器对象中
        .setStrategy(strategyConfig)// 将策略配置放到代码生成器对象中
        .setCfg(cfg)// 将自定义配置放到代码生成器对象中
        .execute();// 执行!
    }

    /**
	 * <p>
	 * 读取控制台内容
	 * </p>
	 */
    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.isNotBlank(ipt)) {
				return ipt;
			}
		}
		throw new MybatisPlusException("请输入正确的" + tip + "!");
	}

}