SpringBoot整合多数据源(8)

在整合之前,首先准备两个数据库,同一张表

第一步:修改resources目录下的application.properties文件配置两个数据源            

spring.datasource.ssmsb.driver-class-name: com.mysql.jdbc.Driver
spring.datasource.ssmsb.url: jdbc:mysql://127.0.0.1:3306/ssmsb?useSSL=true
spring.datasource.ssmsb.username: root
spring.datasource.ssmsb.password: 123456

spring.datasource.springboot.driver-class-name: com.mysql.jdbc.Driver
spring.datasource.springboot.url: jdbc:mysql://127.0.0.1:3306/springboot?useSSL=true
spring.datasource.springboot.username: root
spring.datasource.springboot.password: 123456

这里注意命名,就采用上述命名

第二步:创建DataSourcemulu 在目录下创建两个数据源的类

 

package cn.icloudit.datesource;

import javax.sql.DataSource;

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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;

@Configuration//注册到springboot容器中
@MapperScan(basePackages="cn.icloudit.test1",sqlSessionFactoryRef="test1SqlSessionFactory")
public class DateSource1Config {

	/**
	 * @methodDesc : 功能描述:(配置test1数据库)
	 * @author Administrator
	 * @createTime
	 */
	//自定义数据源
	@Bean(name = "test1DataSource")
	@Primary
	@ConfigurationProperties(prefix = "spring.datasource.ssmsb")
	public DataSource testDataSource(){
		return DataSourceBuilder.create().build();
	}
	
	/**
	 * @throws Exception 
	 * @methodDesc : 功能描述:(test1 sql会话工厂)
	 */
	@Bean(name = "test1SqlSessionFactory")
	@Primary
	public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception{
		
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		bean.setDataSource(dataSource);
		//mybatis写配置文件
		/*bean.setMapperLocations(
				new 
				PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*xml"));*/
		return bean.getObject();
	}
	
	/**
	 * @methodDesc:功能描述:(test1 事物管理)
	 */
	@Bean(name = "test1TransactionManager")
	@Primary
	public DataSourceTransactionManager testTransactionManager(
			@Qualifier("test1DataSource") DataSource dataSource){
	return new DataSourceTransactionManager(dataSource);
	}
	
	@Bean(name =  "test1SqlSessionTemplate")
	@Primary
	public SqlSessionTemplate testSqlSessionTemplate(
			@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory){
		return new SqlSessionTemplate(sqlSessionFactory);
	}
	
}

第二个数据源

package cn.icloudit.datesource;

import javax.sql.DataSource;

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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

@Configuration//注册到springboot容器中
@MapperScan(basePackages="cn.icloudit.test2",sqlSessionFactoryRef="test2SqlSessionFactory")
public class DateSource2Config {

	/**
	 * @methodDesc : 功能描述:(配置test2数据库)
	 * @author Administrator
	 * @createTime
	 */
	//自定义数据源
	@Bean(name = "test2DataSource")
	@ConfigurationProperties(prefix = "spring.datasource.springboot")
	public DataSource testDataSource(){
		return DataSourceBuilder.create().build();
	}
	
	/**
	 * @throws Exception 
	 * @methodDesc : 功能描述:(test2 sql会话工厂)
	 */
	@Bean(name = "test2SqlSessionFactory")
	public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception{
		
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		bean.setDataSource(dataSource);
		//mybatis写配置文件
		/*bean.setMapperLocations(
				new 
				PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*xml"));*/
		return bean.getObject();
	}
	
	/**
	 * @methodDesc:功能描述:(test2 事物管理)
	 */
	@Bean(name = "test2TransactionManager")
	public DataSourceTransactionManager testTransactionManager(
			@Qualifier("test2DataSource") DataSource dataSource){
	return new DataSourceTransactionManager(dataSource);
	}
	
	@Bean(name =  "test2SqlSessionTemplate")
	public SqlSessionTemplate testSqlSessionTemplate(
			@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory){
		return new SqlSessionTemplate(sqlSessionFactory);
	}
	
}

第三步:创建mapper 对应两个数据源

 

package cn.icloudit.test1.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import cn.icloudit.entity.User;

public interface UserMapperTest1 {

	@Select("SELECT * FROM USER_T WHERE USER_NAME= #{user_name}")
	List<User> findByName(@Param("user_name") String name);
	
	@Insert("INSERT INTO USER_T(USER_NAME,AGE,PASSWORD) VALUES(#{user_name},#{age},#{password})")
	int insert(@Param("user_name") String name,@Param("age") Integer age,@Param("password") String password);
}

第二个mapper

package cn.icloudit.test2.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import cn.icloudit.entity.User;

public interface UserMapperTest2 {

	@Select("SELECT * FROM USER_T WHERE USER_NAME= #{user_name}")
	List<User> findByName(@Param("user_name") String name);
	
	@Insert("INSERT INTO USER_T(USER_NAME,AGE,PASSWORD) VALUES(#{user_name},#{age},#{password})")
	int insert(@Param("user_name") String name,@Param("age") Integer age,@Param("password") String password);
}
第四步:在数据源类中 添加注解@Primary 意思是默认使用哪一个数据源


第五步:创建service

package cn.icloudit.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.icloudit.entity.User;
import cn.icloudit.mapper.UserMapper;
import cn.icloudit.test1.mapper.UserMapperTest1;

@Service
public class UserServiceTest1 {

	@Autowired
	private UserMapperTest1 usermappertest1;
	
	public void insert(String name,Integer age,String password){
		usermappertest1.insert(name, age, password);
	}
	
	public List<User> findByName(String name){
		return usermappertest1.findByName(name);
	}
}

第二个

package cn.icloudit.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.icloudit.entity.User;
import cn.icloudit.mapper.UserMapper;
import cn.icloudit.test2.mapper.UserMapperTest2;

@Service
public class UserServiceTest2 {

	@Autowired
	private UserMapperTest2 usermappertest2;
	
	public void insert(String name,Integer age,String password){
		usermappertest2.insert(name, age, password);
	}
	
	public List<User> findByName(String name){
		return usermappertest2.findByName(name);
	}
}

第六步:创建controller

 

	@RequestMapping("/insertTest1")
	@ResponseBody
	public String insertTest1(){
		userServiceTest1.insert("ly", 22, "1111111");
		return "success";
	}
	
	@RequestMapping("/insertTest2")
	@ResponseBody
	public String insertTest2(){
		userServiceTest2.insert("zly", 22, "22222222");
		return "success";
	}

第七步:启动

package cn.icloudit;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
//@ComponentScan(basePackages={"cn.icloudit.controller","cn.icloudit.service"})
@MapperScan(basePackages={"cn.icloudit.mapper"})
//@EnableAutoConfiguration
public class APP {

	public static void main(String[] args) {
		SpringApplication.run(APP.class, args);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值