springboot 第十九节 starter and muti_datasource 多数据源
1、
spring.datasource.spring.driverClassName=com.mysql.jdbc.Driver
spring.datasource.spring.jdbcUrl=jdbc:mysql://127.0.0.1:3306/springboot?serverTimezone=GMT%2B8
spring.datasource.spring.username=root
spring.datasource.spring.password=root
spring.datasource.spring2.driverClassName=com.mysql.jdbc.Driver
spring.datasource.spring2.jdbcUrl=jdbc:mysql://127.0.0.1:3306/springcloud?serverTimezone=GMT%2B8
spring.datasource.spring2.username=root
spring.datasource.spring2.password=root
2、
package com.tx.config;
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.tx.dao.orders", sqlSessionFactoryRef = "test2SqlSessionFactory")
public class DataSource2Config {
@Bean(name = "test2DataSource")
/* 主要是这里,配置了数据源2*/
@ConfigurationProperties(prefix = "spring.datasource.spring2")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test2SqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapping/orders/*.xml"));
return bean.getObject();
}
@Bean(name = "test2TransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test2SqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(
@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
3、
package com.tx.service.impl;
import com.tx.dao.orders.OrdersMapper;
import com.tx.dao.users.UsersMapper;
import com.tx.model.Orders;
import com.tx.model.Users;
import com.tx.service.IOrderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Service
public class OrderServiceImpl implements IOrderService {
@Resource
private UsersMapper usersMapper;
@Resource
private OrdersMapper ordersMapper;
@Override
@Transactional
public void addOrder(Orders orders, Users users) {
usersMapper.insertSelective(users);
ordersMapper.insertSelective(orders);
}
}
4、最后测试:
import com.tx.App;
import com.tx.model.Orders;
import com.tx.model.Users;
import com.tx.service.IOrderService;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@SpringBootTest(classes = {App.class})
@RunWith(SpringRunner.class)
public class Test {
@Resource
private IOrderService iOrderService;
@org.junit.Test
public void test1() {
Users users = new Users();
users.setUsername("enjoy34");
users.setPasswd("haha34");
users.setId(34);
Orders orders = new Orders();
orders.setAccount(34);
orders.setName("娃娃34");
orders.setUserId(34);
iOrderService.addOrder(orders,users);
}
}
代码示例:https://gitee.com/dgx555/springboot/tree/master/springboot_enjoy_03_starter_andmuti_datasource