springboot+mybatis-plus+双数据源

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

在对应的ServiceImpl使用@DS注解来标识对应的数据源名称


版权声明:本文为weixin_45008350原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。