1.配置yml
2. 多数据源配置就和primaryConfig一致+这个是配合mybatis-plus的配置方式
3.还需要配置mybatis-plus默认分页数
package com.iflytek.edu.backend.config.dataSource; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import com.github.pagehelper.PageInterceptor; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; import java.util.Properties; @Configuration @EnableConfigurationProperties(MybatisPlusProperties.class) @MapperScan(basePackages = "com.iflytek.edu.backend.mapper.primary", sqlSessionFactoryRef = "PrimarySqlSessionFactory")//basePackages:接口文件的包路径 public class PrimaryDataSourceConfig { public static final String PRIMARY_DATA_SOURCE_CONFIG = "PrimaryDataSourceConfig"; @Bean(name = "PrimaryDataSource") // 表示这个数据源是默认数据源 @Primary//这个一定要加,如果两个数据源都没有@Primary会报错 @ConfigurationProperties(prefix = "spring.datasource.druid.primary")//我们配置文件中的前缀 public DataSource getPrimaryDateSource() { return DataSourceBuilder.create().build(); } @Bean(name = "PrimarySqlSessionFactory") @Primary public SqlSessionFactory primarySqlSessionFactory(@Qualifier("PrimaryDataSource") DataSource datasource) throws Exception { MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean (); bean.setDataSource(datasource); bean.setMapperLocations( new PathMatchingResourcePatternResolver().getResources("classpath:mapper/primary/*.xml")); bean.setPlugins(mybatisPlusInterceptor()); return bean.getObject();// 设置mybatis的xml所在位置 } @Bean("PrimarySqlSessionTemplate") // 表示这个数据源是默认数据源 @Primary public SqlSessionTemplate primarySqlSessionTemplate( @Qualifier("PrimarySqlSessionFactory") SqlSessionFactory sessionfactory) { return new SqlSessionTemplate(sessionfactory); } @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
/** * <br> * Copyright (c) 2020 IFlyTek. All rights reserved.<br> * <br> * Package: com.iflytek.zhcs.build.config <br> * FileName: MybatisPlusConfig.java <br> * <br> * @version * @author system * @created 2020年12月29日 下午5:26:59 <br/> */ package com.iflytek.edu.backend.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Function: TODO ADD FUNCTION. <br/> * @author system * @since JDK 1.8 */ @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false // paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,默认 500 条,-1 不受限制 // paginationInterceptor.setLimit(500); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setLimit(100); paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } }
yml中的配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
## 连接池配置
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
primary:
## 数据源one配置
jdbc-url: jdbc:mysql://192.168.59.17:23307/wuhu_ygyk?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: wV8C93gn2LYTI_I
driver-class-name: com.mysql.cj.jdbc.Driver
secondary:
## 数据源two配置
jdbc-url: jdbc:mysql://192.168.59.17:23307/qxpt_wuhu?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: wV8C93gn2LYTI_I
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
# 3.0.8之前版本问题默认将枚举注册为EnumOrdinalTypeHandler,这是错误的方式,默认是 org.apache.ibatis.type.EnumTypeHandler
# 如果项目之中实体统一使用IEnum或注解的方式,可配置成 com.baomidou.mybatisplus.extension.handlers.EnumTypeHandler,也可省略上面的type-enums-package配置
# 配置type-enums-package只对注解方式的枚举处理能提前加载缓存.
# default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:com/iflytek/edu/backend/mapper/*.xml
type-aliases-package: com.iflytek.edu.backend.entity
# type-enums-package: com.iflytek.edu.common.enums
global-config:
db-config:
logic-delete-field: is_delete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)