<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>最新版本</version>
</dependency>
<!-- 模板引擎,需要指定 mpg.setTemplateEngine(new FreemarkerTemplateEngine()); -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>最新版本</version>
</dependency>
<!-- MP 核心库 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>最新版本</version>
</dependency>
package com.management.manage;
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;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.management.manage.converts.OracleTypeConvert;
import org.junit.Test;
/**
* <p>f
* 测试生成代码
* </p>
*
* @author K神
* @date 2017/12/18
*/
public class GeneratorServiceEntity {
@Test
public void generateCode() {
String packageName = "com.baomidou.springboot";
boolean serviceNameStartWithI = false;//user -> UserService, 设置成true: user -> IUserService
generateByTables(serviceNameStartWithI, packageName, "POLICE_QA_QBANK");
}
private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
GlobalConfig config = new GlobalConfig();
String dbUrl = "jdbc:oracle:thin:@101.37.149.47:11521:orcl";
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.ORACLE)
.setUrl(dbUrl)
.setUsername("js_gongan")
.setPassword("HLKJ#jsga2018")
.setTypeConvert(new OracleTypeConvert())//自定义数据库类型转换
.setDriverName("oracle.jdbc.driver.OracleDriver");
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)
.setEntityLombokModel(false)
.setDbColumnUnderline(false)
.setNaming(NamingStrategy.underline_to_camel)
.setRestControllerStyle(true)
.entityTableFieldAnnotationEnable(true)//是否生成实体时,生成字段注解
.setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
config.setActiveRecord(false)
.setAuthor("赵炎")
.setOutputDir("E:\\codeGen")
.setFileOverride(true);
if (!serviceNameStartWithI) {
config.setServiceName("%sService");
}
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(
new PackageConfig()
.setParent(packageName)
.setController("controller")
.setEntity("entity")
).execute();
}
private void generateByTables(String packageName, String... tableNames) {
generateByTables(true, packageName, tableNames);
}
}
package com.management.manage.converts;
import com.baomidou.mybatisplus.generator.config.ITypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
//@Component
public class OracleTypeConvert implements ITypeConvert {
@Override
public DbColumnType processTypeConvert(String s) {
String t = s.toUpperCase();
if (t.contains("CHAR")) {
return DbColumnType.STRING;
} else if (t.contains("DATE") || t.contains("TIMESTAMP")) {
return DbColumnType.DATE;
} else if (t.contains("NUMBER")) {
if (t.matches("NUMBER\\(+\\d\\)")) {
return DbColumnType.INTEGER;
} else if (t.matches("NUMBER\\(+\\d{2}+\\)")) {
return DbColumnType.LONG;
}
return DbColumnType.INTEGER;
} else if (t.contains("FLOAT")) {
return DbColumnType.FLOAT;
} else if (t.contains("clob")) {
return DbColumnType.CLOB;
} else if (t.contains("BLOB")) {
return DbColumnType.OBJECT;
} else if (t.contains("binary")) {
return DbColumnType.BYTE_ARRAY;
} else if (t.contains("RAW")) {
return DbColumnType.BYTE_ARRAY;
}
return DbColumnType.STRING;
}
}
package com.management.manage.common.handler;
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.Objects;
/**
* 注入公共字段自动填充,任选注入方式即可
*/
//@Component
public class MyMetaObjectHandler extends MetaObjectHandler {
protected final static Logger logger = LoggerFactory.getLogger(MyMetaObjectHandler.class);
@Override
public void insertFill(MetaObject metaObject) {
Object isDelete = getFieldValByName("isdelete", metaObject);
if(Objects.isNull(isDelete)){
setFieldValByName("isdelete",0, metaObject);//mybatis-plus版本2.0.9+
}
}
@Override
public void updateFill(MetaObject metaObject) {
logger.info("更新的时候干点不可描述的事情");
setFieldValByName("updatetime", new Date(), metaObject);
}
}