springboot +mybaits-plus+mybatis-plus的双数据源和逆向工程的配置整合
废话不多说直接开始干
mybatis-plus逆向工程的配置
public class CodeGenerator {
/**
* Project package
*/
private static String projectPackage;
/**
* controller package
*/
private static String controllerPackage;
/**
* entity package
*/
// private static String entityPackage;
/**
* author
*/
private static String author;
/**
* Database url
*/
private static String url;
/**
* Database username
*/
private static String username;
/**
* Database password
*/
private static String password;
/**
* Database driver class
*/
private static String driverClass;
/**
* 文件名后缀
*/
private static String fileSuffix = ".java";
/**
* Init database information
*/
static {
Properties properties = new Properties();
// 这个文件对应逆向工程配置文件
InputStream i = CodeGenerator.class.getResourceAsStream("/mybatis-plus.properties");
try {
properties.load(i);
projectPackage = properties.getProperty("generator.parent.package");
controllerPackage = properties.getProperty("controller.package");
// entityPackage = properties.getProperty(“entity.package”);
url = properties.getProperty(“generator.jdbc.url”);
username = properties.getProperty(“generator.jdbc.username”);
password = properties.getProperty(“generator.jdbc.password”);
driverClass = properties.getProperty(“generator.jdbc.driverClass”);
author = properties.getProperty(“author”);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* main method, execute code generator
*/
public static void main(String[] args) {
String projectPath = System.getProperty("user.dir");
String javaPath = projectPackage.replaceAll("\\.", "/");
System.out.println(javaPath+"===============>");
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(projectPath + "/src/main/java"); // 输出文件目录
gc.setFileOverride(true); // 是否覆盖已有文件
gc.setOpen(false); // 是否打开输出目录
gc.setAuthor(author);
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setBaseResultMap(true); // mapper.xml中生成BaseResultMap
gc.setActiveRecord(true);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(url);
dsc.setUsername(username);
dsc.setPassword(password);
dsc.setDriverName(driverClass);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent(projectPackage);
pc.setController(controllerPackage);
// pc.setEntity(entityPackage);
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 如果模板引擎是 freemarker
String entityPath = "/templates/entity.java.ftl";
// 自定义配置会被优先输出
focList.add(new FileOutConfig(entityPath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/src/main/java/" + javaPath + "/entity/" + tableInfo.getEntityName() + fileSuffix;
}
});
// 如果模板引擎是 freemarker
String controllerPath = "/templates/controller.java.ftl";
// 自定义配置会被优先输出
focList.add(new FileOutConfig(controllerPath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/src/main/java/" + javaPath + "/controller/" + tableInfo.getEntityName() + "Controller" + fileSuffix;
}
});
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setRestControllerStyle(true);
// 注意这个设置的BaseController文件,这个文件在启动类目录的common目录下
// 之后的controller层文件会引这个地方的包
strategy.setEntityLombokModel(true);//启用lombok注解
strategy.setExclude();
// 这里声明要自动生成代码的表是哪些
strategy.setInclude("mp_user","t_product");
//strategy.setTablePrefix("前缀");//去表前缀配置
//设置对应表中的组件及pojo与column对应名称名称,和逻辑删除
strategy.setEntityTableFieldAnnotationEnable(true);
mpg.setGlobalConfig(gc);
mpg.setDataSource(dsc);
mpg.setPackageInfo(pc);
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
== 逆向工程的配置文件==
作者 不要用中文,中文会乱码
author=atzhou
启动类所在的包名
generator.parent.package=com.atzhou
声明controller和实体domain所在的包名
controller.package=controller
数据库连接
generator.jdbc.driverClass = com.mysql.cj.jdbc.Driver
generator.jdbc.url=jdbc:mysql://localhost:3306/atzhou_expert?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
generator.jdbc.username=****
generator.jdbc.password=****
双数据源的配置 —>yaml的数据配置
spring:
配置数据源信息
datasource:
dynamic:
# 设置默认的数据源或者数据源组,默认值即为master
primary: master
# 严格匹配数据源,默认false.true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/atzhou_expert?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
username: ****
password: *****
slave_1:
url: jdbc:mysql://localhost:3306/atzhou_expert_01?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
username: ****
password: ****
mybatis-plus:
configuration:
#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
# 设置实体类所对应的表的统一前缀
table-prefix: t_
#分配id 这里使用的雪花算法
id-type: ASSIGN_ID
# 配置类型别名所对应的包
type-aliases-package: com.atzhou.pojo
type-enums-package: com.atzhou.enums