springboot + mybatis plus 自动代码生成

参考网上搜索的结果,整理一份测试通过代码生成类。



            com.baomidou
            mybatis-plus
            2.1.8
        
        
        
            org.apache.velocity
            velocity
            1.7
        
         
        
            mysql
            mysql-connector-java
            5.1.8
        
package generator;


import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 代码生成器
 * @author
 */
public class MpGenerator {
	private static final String AUTHOR = "123";
	private static final String OUTPUT_DIR = "D://" + "\\generator\\" + System.currentTimeMillis();
	private static final String JAVA_DIR = OUTPUT_DIR + "\\java";
	private static final String MAPPER_XML_DIR = OUTPUT_DIR + "\\mapper";
    private static final String JDBC_URL = "jdbc:mysql://ip:3306/库名";

	/**
	 * 

* *

*/ public static void main(String[] args) throws IOException { //清空输出文件 try { Path outPutPath = Paths.get(OUTPUT_DIR); Files.createDirectories(outPutPath); } catch (IOException e) { e.printStackTrace(); } AutoGenerator mpg = new AutoGenerator(); // 选择 freemarker 引擎,默认 Veloctiy 需要增加Veloctiy maven 依赖 // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir(JAVA_DIR); gc.setOpen(false); gc.setFileOverride(true); gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false gc.setEnableCache(false);// XML 二级缓存 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(true);// XML columList gc.setAuthor(AUTHOR); gc.setServiceName("%sService"); gc.setServiceImplName("%sServiceImpl"); gc.setMapperName("%sMapper"); gc.setXmlName(gc.getMapperName()); gc.setControllerName("%sController"); //注意 %s 会自动填充表实体属性! mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); dsc.setTypeConvert(new MySqlTypeConvert() { // 自定义数据库表字段类型转换【可选】 @Override public DbColumnType processTypeConvert(String fieldType) { // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。 if("tinyint(1)".equals(fieldType)) { return DbColumnType.BOOLEAN; } return super.processTypeConvert(fieldType); } }); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("数据库账号"); dsc.setPassword("数据库密码"); dsc.setUrl(JDBC_URL); mpg.setDataSource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略 strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); strategy.setEntityBooleanColumnRemoveIsPrefix(true); mpg.setStrategy(strategy); // 包配置 final PackageConfig pc = new PackageConfig(); // 其他配置使用默认值 pc.setParent("com.*"); mpg.setPackageInfo(pc); // 注入自定义配置, InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { Map map = new HashMap(); map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp"); this.setMap(map); } }; List focList = new ArrayList(); // xml生成目录 focList.add(new FileOutConfig("/templates/mapper.xml.vm") { @Override public String outputFile(TableInfo tableInfo) { Path xmlDirPath = Paths.get(MAPPER_XML_DIR, pc.getParent().replaceAll("\\.", "\\\\"),"mapper"); File xmlDir = xmlDirPath.toFile(); if(!xmlDir.exists()) { xmlDir.mkdirs(); } return Paths.get(xmlDirPath.toString(), tableInfo.getEntityName() + "Mapper.xml").toString(); } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 关闭默认 xml 生成,调整生成 至 根目录 TemplateConfig tc = new TemplateConfig(); tc.setXml(null); mpg.setTemplate(tc); // 执行生成 mpg.execute(); System.out.println("=============文件生成完成==============="); } }

你可能感兴趣的:(java,java工具类)