基于MyBatisPlus的代码生成(以Oracle为例)

直接复制粘贴(把数据库地址,生成代码地址等修改后)就可以直接运行

package com.zz.bzyw.generator;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
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.OracleTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.config.rules.PropertyInfo;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author gq
* @date 2020/11/6 14:24
*/
public class MysqlGenerator {

public static String scanner(String tip){
Scanner scanner=new Scanner(System.in);
StringBuilder help=new StringBuilder();
help.append("请输入"+tip+":");
if(scanner.hasNext()){
String ipt=scanner.next();
if(StringUtils.isNotEmpty(ipt)){
return ipt;
}
}
throw new MybatisPlusException("请输入正确的"+tip+"!");
}
public static void main(String[] args) {
//代码生成器
AutoGenerator mpg=new AutoGenerator();
//全局配置
GlobalConfig gc=new GlobalConfig();
String projectPath="项目地址";//***************************项目地址(绝对地址,如:D://PROJECT/Demo/)***********************************
gc.setOutputDir(projectPath+"/src/main/java");
gc.setAuthor("创建人");//***************************创建人(生成的是注释)***********************************
gc.setOpen(false);
//gc.setIdType(IdType.INPUT);
gc.setSwagger2(true);
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
//是否覆盖已有文件
gc.setFileOverride(true);
mpg.setGlobalConfig(gc);
//数据源配置
DataSourceConfig dsc=new DataSourceConfig();
dsc.setUrl("jdbc:oracle:thin:@10.0.10.111:1521/orclpdb");//***************************数据库***********************************
dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
dsc.setUsername("root");//***************************用户名***********************************
dsc.setPassword("123456");//***************************密码***********************************
dsc.setTypeConvert(new OracleTypeConvert(){
@Override
public PropertyInfo processTypeConvert(GlobalConfig globalConfig, String fieldType) {
String t = fieldType.toLowerCase();
if (t.contains("char")) {
return DbColumnType.STRING;
} else {
if (!t.contains("date") && !t.contains("timestamp")) {
if (t.contains("number")) {
if (t.matches("number\\(+\\d\\)")) {
return DbColumnType.INTEGER;
}
if (t.matches("number\\(+\\d{2}+\\)")) {
return DbColumnType.LONG;
}
return DbColumnType.DOUBLE;
}
if (t.contains("float")) {
return DbColumnType.FLOAT;
}
if (t.contains("clob")) {
return DbColumnType.STRING;
}
if (t.contains("blob")) {
return DbColumnType.BLOB;
}
if (t.contains("binary")) {
return DbColumnType.BYTE_ARRAY;
}
if (t.contains("raw")) {
return DbColumnType.BYTE_ARRAY;
}
} else {
switch(globalConfig.getDateType()) {
case ONLY_DATE:
return DbColumnType.DATE;
case SQL_PACK:
return DbColumnType.TIMESTAMP;
case TIME_PACK:
return DbColumnType.LOCAL_DATE_TIME;
}
}
return DbColumnType.STRING;
}

//return super.processTypeConvert(globalConfig, fieldType);
}
});
mpg.setDataSource(dsc);
//包配置
PackageConfig pc=new PackageConfig();
//pc.setModuleName(scanner("模块名"));
pc.setParent("com.zz.bzyw");//***************************存放总地址***********************************
pc.setEntity("entity");//***************************存放分地址(entity)***********************************
pc.setMapper("dao");//***************************存放分地址(dao)***********************************
mpg.setPackageInfo(pc);
InjectionConfig cfg=new InjectionConfig() {
@Override
public void initMap() {
}
};
String templatePath="/templates/mapper.xml.vm";
List<FileOutConfig> focList=new ArrayList<>();
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath+"/src/main/resources/mapper/"+
"/"+tableInfo.getEntityName()+"Mapper"+ StringPool.DOT_XML;
}
});//***************************存放分地址(mapper)***********************************
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
TemplateConfig templateConfig=new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
StrategyConfig strategy=new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setRestControllerStyle(true);
strategy.setEntityLombokModel(true);
//strategy.setSuperEntityColumns("id");
strategy.setInclude(scanner("表名,多个英文逗号分隔").split(","));
//strategy.setControllerMappingHyphenStyle(true);
//strategy.setTablePrefix(pc.getModuleName()+"_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new VelocityTemplateEngine());
mpg.execute();

}
/**
运行后在控制台输入数据库中的需要生成相应代码的表的表名(多张表用“,”隔开)
*/
}

	
	运行后在控制台输入数据库中的需要生成相应代码的表的表名(多张表用“,”隔开)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值