mybatisplus 多数据源分页
时间: 2023-09-05 10:14:55 浏览: 170
mybatis-plus分页查询
MyBatis Plus(简称MP)支持多数据源配置和分页功能。下面是一种实现多数据源分页的方法:
1. 配置多数据源:
在你的配置文件中,可以配置多个数据源,例如在 `application.yml` 中配置两个数据源:
```yaml
spring:
datasource:
primary:
url: jdbc:mysql://localhost:3306/db1
username: user1
password: password1
secondary:
url: jdbc:mysql://localhost:3306/db2
username: user2
password: password2
```
2. 创建多个数据源:
在你的代码中,你需要创建多个数据源,并将其注入到 `SqlSessionFactory` 中。这可以通过使用 `DruidDataSource` 和 `MybatisSqlSessionFactoryBean` 实现。例如:
```java
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
// 创建第一个数据源
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
// 创建第二个数据源
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource primaryDataSource,
@Qualifier("secondaryDataSource") DataSource secondaryDataSource) throws Exception {
MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
// 设置数据源
Map<Object, Object> dataSourceMap = new HashMap<>();
dataSourceMap.put("primary", primaryDataSource);
dataSourceMap.put("secondary", secondaryDataSource);
DynamicDataSource dynamicDataSource = new DynamicDataSource();
dynamicDataSource.setTargetDataSources(dataSourceMap);
dynamicDataSource.setDefaultTargetDataSource(primaryDataSource);
sessionFactory.setDataSource(dynamicDataSource);
// 设置Mapper扫描路径
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath*:mapper/**/*.xml"));
return sessionFactory.getObject();
}
}
```
3. 创建分页查询方法:
在你的 Mapper 接口中,可以使用 MyBatis Plus 提供的分页查询方法。例如:
```java
@Repository
public interface UserMapper extends BaseMapper<User> {
// 使用 MyBatis Plus 提供的分页查询方法
IPage<User> selectUserPage(Page<User> page, @Param("name") String name);
}
```
4. 使用分页查询:
在你的 Service 或 Controller 中,可以使用 `Page` 类来配置分页参数,并将其传递给 Mapper 接口的分页查询方法。例如:
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<User> getUserPage(int pageNum, int pageSize, String name) {
// 创建分页对象
Page<User> page = new Page<>(pageNum, pageSize);
// 调用分页查询方法
IPage<User> userPage = userMapper.selectUserPage(page, name);
return userPage;
}
}
```
以上是一种实现 MyBatis Plus 多数据源分页的方法。你可以根据自己的实际情况进行调整和修改。希望能对你有所帮助!如有疑问,请随时问我。
阅读全文