Commit e8ab87d1 by stylefeng

重写代码生成器

parent d3af62f9
package generator;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import generator.config.GunsGeneratorConfig;
/**
* 代码生成器,可以生成实体,dao,service,controller,html,js
*
* @author stylefeng
* @Date 2017/5/21 12:38
*/
public class GunsCodeGenerator {
public static void main(String[] args) {
AutoGenerator generator = new GunsGeneratorConfig().getGenerator();
generator.execute();
}
}
\ No newline at end of file
package generator;
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.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
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.util.HashMap;
import java.util.Map;
/**
* mybatis-plus代码生成器(用于生成entity)<br>
* 注意:<br>
* 因为没用mybatis-plus的Service和Controller所以生成完之后要删掉TTT目录
* @author stylefeng
* @Date 2017/5/21 12:38
*/
public class MyBatisPlusGenerator {
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir("/Users/stylefeng/work/ideaSpace/guns/guns-admin/src/main/java");//这里写你自己的java目录
gc.setFileOverride(true);//是否覆盖
gc.setActiveRecord(true);
gc.setEnableCache(false);// XML 二级缓存
gc.setBaseResultMap(true);// XML ResultMap
gc.setBaseColumnList(false);// XML columList
gc.setAuthor("stylefeng");
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert() {
// 自定义数据库表字段类型转换【可选】
@Override
public DbColumnType processTypeConvert(String fieldType) {
return super.processTypeConvert(fieldType);
}
});
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8");
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//strategy.setTablePrefix(new String[]{"_"});// 此处可以修改为您的表前缀
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
mpg.setStrategy(strategy);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent(null);
pc.setEntity("com.stylefeng.guns.common.persistence.model");
pc.setMapper("com.stylefeng.guns.common.persistence.dao");
pc.setXml("com.stylefeng.guns.common.persistence.dao.mapping");
pc.setService("TTT"); //本项目没用,生成之后删掉
pc.setServiceImpl("TTT"); //本项目没用,生成之后删掉
pc.setController("TTT"); //本项目没用,生成之后删掉
mpg.setPackageInfo(pc);
// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
}
};
mpg.setCfg(cfg);
// 执行生成
mpg.execute();
// 打印注入设置
System.err.println(mpg.getCfg().getMap().get("abc"));
}
}
\ No newline at end of file
package generator.config;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
/**
* 代码生成的抽象配置
*
* @author fengshuonan
* @date 2017-10-28-下午8:22
*/
public abstract class AbstractGeneratorConfig {
GlobalConfig globalConfig = new GlobalConfig();
DataSourceConfig dataSourceConfig = new DataSourceConfig();
StrategyConfig strategyConfig = new StrategyConfig();
PackageConfig packageConfig = new PackageConfig();
protected abstract void globalConfig();
protected abstract void dataSourceConfig();
protected abstract void strategyConfig();
protected abstract void packageConfig();
public void init() {
globalConfig();
dataSourceConfig();
strategyConfig();
packageConfig();
}
public AbstractGeneratorConfig(){
init();
}
public AutoGenerator getGenerator(){
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig);
autoGenerator.setDataSource(dataSourceConfig);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setPackageInfo(packageConfig);
return autoGenerator;
}
}
package generator.config;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* 默认的代码生成的配置
*
* @author fengshuonan
* @date 2017-10-28-下午8:27
*/
public class GunsGeneratorConfig extends AbstractGeneratorConfig {
@Override
protected void globalConfig() {
super.globalConfig.setOutputDir("/Users/stylefeng/work/ideaSpace/guns/guns-admin/src/main/java");
super.globalConfig.setFileOverride(true);
super.globalConfig.setEnableCache(false);
super.globalConfig.setBaseResultMap(true);
super.globalConfig.setBaseColumnList(true);
super.globalConfig.setAuthor("stylefeng");
}
@Override
protected void dataSourceConfig() {
super.dataSourceConfig.setDbType(DbType.MYSQL);
super.dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
super.dataSourceConfig.setUsername("root");
super.dataSourceConfig.setPassword("root");
super.dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8");
}
@Override
protected void strategyConfig() {
//strategy.setTablePrefix(new String[]{"_"});// 此处可以修改为您的表前缀
super.strategyConfig.setInclude(new String[]{"bill"});
super.strategyConfig.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
}
@Override
protected void packageConfig() {
super.packageConfig.setParent(null);
super.packageConfig.setEntity("com.stylefeng.guns.common.persistence.model");
super.packageConfig.setMapper("com.stylefeng.guns.common.persistence.dao");
super.packageConfig.setXml("com.stylefeng.guns.common.persistence.dao.mapping");
super.packageConfig.setService("TTT"); //本项目没用,生成之后删掉
super.packageConfig.setServiceImpl("TTT"); //本项目没用,生成之后删掉
super.packageConfig.setController("TTT"); //本项目没用,生成之后删掉
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment