在整合之前,首先准备两个数据库,同一张表
第一步:修改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);
}
}