Spring Boot 集成Mybatis Plus 多数据源配置

本文详细介绍了如何在SpringBoot应用中使用两个不同的数据源(sys和oa)进行配置,包括配置文件、MyBatisSqlSessionFactory的创建以及事务管理器的设置。
摘要由CSDN通过智能技术生成

一、application.yml 配置

数据源1 取名sys; 数据源2 取名oa

二、配置类:二个配置文件数据源1配置为SysDataSourceConfig 数据源2配置为OaDataSourceConfig

package com.deft.web.admin.conf;

import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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.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 org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;
//com.hccake.ballcat.system.mapper

@Configuration
//basePackages配置sys数据源的mapper文件目录
@MapperScan(basePackages = "com.base.test.mapper.sys", sqlSessionTemplateRef = "sysSqlSessionTemplate")
public class SysDataSourceConfig {

	@Bean(name = "sysDataSource")
	@ConfigurationProperties(prefix = "spring.datasource.sys")//指向yml配置文件中的数据库配置
	@Primary    //主库加这个注解,修改优先权,表示发现相同类型bean,优先使用该方法。
	public DataSource sysDataSource() {
		return DataSourceBuilder.create().build();
	}

	@Bean(name = "sysSqlSessionFactory")
	@Primary
	public SqlSessionFactory sysSqlSessionFactory() throws Exception {
		MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean ();
		bean.setDataSource(sysDataSource());
		bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/**/*Mapper.xml"));
		//这个的getResources指向的是你的mapper.xml文件,相当于在yml中配置的mapper-locations,此处配置了yml中就不用配置,或者说不会读取yml中的该配置。
		return bean.getObject();
	}

	@Bean(name = "sysTransactionManager")
	@Primary
	public DataSourceTransactionManager sysTransactionManager() {
		return new DataSourceTransactionManager(sysDataSource());
	}

	@Bean(name = "sysSqlSessionTemplate")
	@Primary
	public SqlSessionTemplate sysSqlSessionTemplate() throws Exception {
		return new SqlSessionTemplate(sysSqlSessionFactory());
	}
}
package com.deft.web.admin.conf;

import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
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.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 org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;


@Configuration
@MapperScan(basePackages = "com.base.test.mapper.oa", sqlSessionTemplateRef = "oaSqlSessionTemplate")
public class OaDataSourceConfig {

	@Bean(name = "oaDataSource")
	@ConfigurationProperties(prefix = "spring.datasource.oa")//指向yml配置文件中的数据库配置
//	@Primary    //主库加这个注解,修改优先权,表示发现相同类型bean,优先使用该方法。
	public DataSource oaDataSource() {
		return DataSourceBuilder.create().build();
	}

	@Bean(name = "oaSqlSessionFactory")
//	@Primary
	public SqlSessionFactory oaSqlSessionFactory(@Qualifier("oaDataSource") DataSource dataSource) throws Exception {
		MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
		bean.setDataSource(dataSource);
		bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper/**/*Mapper.xml"));
		//这个的getResources指向的是你的mapper.xml文件,相当于在yml中配置的mapper-locations,此处配置了yml中就不用配置,或者说不会读取yml中的该配置。
		return bean.getObject();
	}

	@Bean(name = "oaTransactionManager")
//	@Primary
	public DataSourceTransactionManager oaTransactionManager() {
		return new DataSourceTransactionManager(oaDataSource());
	}

	@Bean(name = "oaSqlSessionTemplate")
//	@Primary
	public SqlSessionTemplate oaSqlSessionTemplate(@Qualifier("oaSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
		return new SqlSessionTemplate(sqlSessionFactory);
	}


	
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Spring Boot中使用Mybatis Plus,可以按照以下步骤进行配置: 1. 添加相关依赖 在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency> ``` 2. 配置数据源 在`application.properties`或`application.yml`中配置数据库连接信息,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 配置Mybatis Plus 在Spring Boot配置类中,添加`@MapperScan`注解,并指定Mapper接口的包路径,例如: ```java @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { } ``` 4. 创建Mapper接口和实体类 创建Mapper接口,并继承Mybatis Plus提供的BaseMapper接口,例如: ```java public interface UserMapper extends BaseMapper<User> { } ``` 创建实体类,并使用相关注解进行映射,例如: ```java @Data @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; // getters and setters } ``` 5. 使用Mapper接口 在Service或Controller中注入Mapper接口,并调用其中的方法进行数据库操作,例如: ```java @Autowired private UserMapper userMapper; public void getUserById(Long id) { User user = userMapper.selectById(id); // ... } ``` 以上就是在Spring Boot中使用Mybatis Plus的基本配置和使用步骤。根据具体需求,还可以配置分页插件、逻辑删除等功能。详细的使用文档可以参考Mybatis Plus官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值