问题:spring boot配置单数据源的时候,mybatis-plus分页插件正常使用,当spring boot配置双数据源的时候,原来的mybatis-plus分页插件失效。
解决办法:
1、mybatis-plus分页插件配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
@Configuration
public class Config {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2、mysql数据源配置工具类,添加mybatis-plus分页插件
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.apache.ibatis.session.SqlSessionFactory;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
@Configuration
@MapperScan(basePackages = {"com.baige.mapper.mysql"}, sqlSessionFactoryRef = "mySqlSqlSessionFactory")
public class MySqlConfig {
/**
* 注入mybatis-plus分页插件配置类
*/
@Autowired
private Config config;
@Autowired
@Qualifier("mysql")
private DataSource mysqlDataSource;
@Primary
@Bean(name = "mySqlSqlSessionFactory")
public SqlSessionFactory mysqlSqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(mysqlDataSource);
// 设置mybatis-plus分页插件
factoryBean.setPlugins(config.paginationInterceptor());
return factoryBean.getObject();
}
@Bean
@Primary
public SqlSessionTemplate mysqlSqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(mysqlSqlSessionFactory());
}
}
3、sql server数据源配置工具类,添加mybatis-plus分页插件
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.apache.ibatis.session.SqlSessionFactory;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
@Configuration
@MapperScan(basePackages = {"com.baige.mapper.sqlserver"}, sqlSessionFactoryRef = "sqlServerSqlSessionFactory")
public class SqlServerConfig {
/**
* 注入mybatis-plus分页插件配置类
*/
@Autowired
private Config config;
@Autowired
@Qualifier("sql-server")
private DataSource sqlServerDataSource;
@Primary
@Bean(name = "sqlServerSqlSessionFactory")
public SqlSessionFactory sqlServerSqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(sqlServerDataSource);
// 设置mybatis-plus分页插件
factoryBean.setPlugins(config.paginationInterceptor());
return factoryBean.getObject();
}
@Bean
@Primary
public SqlSessionTemplate sqlServerSqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(sqlServerSqlSessionFactory());
}
}