Spring Boot MyBatis Plus 数据源详细配置教程
2023-12-07 16:47:32
MyBatis Plus 数据源配置:打造高效持久化解决方案
引言
MyBatis Plus 是一个功能强大的 Java 对象关系映射框架,它可以极大简化与数据库的交互。与 Spring Boot 集成后,MyBatis Plus 提供了更简洁、高效的持久化解决方案。本文将深入探讨 MyBatis Plus 的数据源配置,涵盖单数据源、多数据源和动态数据源配置,助你轻松打造高效的持久化系统。
单数据源配置
单数据源配置是最简单的 MyBatis Plus 数据源配置方式。你可以通过在 application.properties
文件中配置以下属性来实现:
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password=123456
或者,你也可以通过 Java 代码配置数据源:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/my_database");
dataSource.setUsername("root");
dataSource.setPassword("123456");
return dataSource;
}
}
多数据源配置
如果你的项目需要连接多个数据库,你可以使用 MyBatis Plus 的多数据源功能。在 application.properties
文件中配置以下属性:
spring.datasource.dynamic.primary=db1
spring.datasource.dynamic.datasource.db1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.dynamic.datasource.db1.username=root
spring.datasource.dynamic.datasource.db1.password=123456
spring.datasource.dynamic.datasource.db2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.dynamic.datasource.db2.username=root
spring.datasource.dynamic.datasource.db2.password=123456
或者,你也可以通过 Java 代码配置多数据源:
@Configuration
public class DynamicDataSourceConfig {
@Bean
public DynamicDataSource dataSource() {
DynamicDataSource dynamicDataSource = new DynamicDataSource();
Map<Object, Object> dataSourceMap = new HashMap<>();
DataSource db1DataSource = new DruidDataSource();
db1DataSource.setUrl("jdbc:mysql://localhost:3306/db1");
db1DataSource.setUsername("root");
db1DataSource.setPassword("123456");
DataSource db2DataSource = new DruidDataSource();
db2DataSource.setUrl("jdbc:mysql://localhost:3306/db2");
db2DataSource.setUsername("root");
db2DataSource.setPassword("123456");
dataSourceMap.put("db1", db1DataSource);
dataSourceMap.put("db2", db2DataSource);
dynamicDataSource.setTargetDataSources(dataSourceMap);
dynamicDataSource.setDefaultTargetDataSource(db1DataSource);
return dynamicDataSource;
}
}
动态数据源配置
动态数据源配置允许你根据需要动态切换数据源。这对于需要根据业务场景访问不同数据库的项目非常有用。你可以通过在 application.properties
文件中配置以下属性来实现:
spring.datasource.dynamic.primary=db1
spring.datasource.dynamic.datasource.db1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.dynamic.datasource.db1.username=root
spring.datasource.dynamic.datasource.db1.password=123456
spring.datasource.dynamic.datasource.db2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.dynamic.datasource.db2.username=root
spring.datasource.dynamic.datasource.db2.password=123456
spring.datasource.dynamic.datasource.db3.url=jdbc:mysql://localhost:3306/db3
spring.datasource.dynamic.datasource.db3.username=root
spring.datasource.dynamic.datasource.db3.password=123456
或者,你也可以通过 Java 代码配置动态数据源:
@Configuration
public class DynamicDataSourceConfig {
@Bean
public DynamicDataSource dataSource() {
DynamicDataSource dynamicDataSource = new DynamicDataSource();
Map<Object, Object> dataSourceMap = new HashMap<>();
DataSource db1DataSource = new DruidDataSource();
db1DataSource.setUrl("jdbc:mysql://localhost:3306/db1");
db1DataSource.setUsername("root");
db1DataSource.setPassword("123456");
DataSource db2DataSource = new DruidDataSource();
db2DataSource.setUrl("jdbc:mysql://localhost:3306/db2");
db2DataSource.setUsername("root");
db2DataSource.setPassword("123456");
DataSource db3DataSource = new DruidDataSource();
db3DataSource.setUrl("jdbc:mysql://localhost:3306/db3");
db3DataSource.setUsername("root");
db3DataSource.setPassword("123456");
dataSourceMap.put("db1", db1DataSource);
dataSourceMap.put("db2", db2DataSource);
dataSourceMap.put("db3", db3DataSource);
dynamicDataSource.setTargetDataSources(dataSourceMap);
dynamicDataSource.setDefaultTargetDataSource(db1DataSource);
return dynamicDataSource;
}
}
MyBatis Plus 配置
除了数据源配置,还需要对 MyBatis Plus 进行一些配置,包括:
- 配置 Mapper XML 文件的位置:
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
- 配置全局配置:
@Configuration
public class MyBatisPlusConfig {
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setDbType(DbType.MYSQL);
globalConfig.setIdType(IdType.AUTO);
return globalConfig;
}
}
常见问题解答
-
如何切换动态数据源?
你可以使用DataSourceContextHolder
类来切换动态数据源。例如:DataSourceContextHolder.setDataSourceKey("db2");
-
如何自定义 MyBatis Plus 拦截器?
你可以通过实现Interceptor
接口来创建自定义拦截器。例如:@Component public class CustomInterceptor implements Interceptor { @Override public Object intercept(Invocation invocation) throws Throwable { // 拦截器逻辑 return invocation.proceed(); } }
-
如何配置 MyBatis Plus 扫描实体类?
你可以通过在application.properties
文件中配置以下属性来扫描实体类:mybatis-plus.type-aliases-package=com.example.domain
-
如何使用 MyBatis Plus 的代码生成器?
你可以通过使用mybatis-plus-generator
依赖来使用 MyBatis Plus 的代码生成器。例如:mvn archetype:generate -DarchetypeArtifactId=mybatis-plus-generator-archetype \ -DarchetypeGroupId=com.baomidou.mybatisplus \ -DarchetypeVersion=3.5.2
-
如何将 MyBatis Plus 整合到 Spring Security 中?
你可以通过使用mybatis-plus-security
依赖来将 MyBatis Plus 整合到 Spring Security 中。例如:<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-security</artifactId> <version>1.0.5</version> </dependency>
结语
MyBatis Plus 的数据源配置提供了灵活性,让你可以根据需要配置单数据源、多数据源或动态数据源。通过了解这些配置选项,你可以为你的项目选择最合适的解决方案,打造高效、易维护的持久化系统。