@Configuration
public class DataSourceConfig{@Primary
@Bean("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource(){
return DataSourceBuilder.create().build();}@Bean("secondaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource(){
return DataSourceBuilder.create().build();}@Bean("primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate
(@Qualifier("primaryDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);}@Bean("secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate
(@Qualifier("secondaryDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);}}
DAO
@Repository
public class OrderDAO{@Resource
private JdbcTemplate primaryJdbcTemplate;//select order by id
public Order findById(Long id,JdbcTemplate jdbcTemplate){if(jdbcTemplate==null){jdbcTemplate=primaryJdbcTemplate;}
String sql = "SELECT * from bookorder WHERE id=?";return jdbcTemplate.queryForObject(sql,
new BeanPropertyRowMapper<>(Order.class),new Object[]{id});}}
Service
@Service
public class OrderServiceImpl implements OrderService{@Resource
private OrderDAO orderDAO;@Resource
private JdbcTemplate primaryJdbcTemplate;@Resource
private JdbcTemplate secondaryJdbcTemplate;@Override
public Order getOrderById(Long id){
return orderDAO.findById(id,null);}@Override
public List<Order> getAll(Order order){
return orderDAO.findOrderList(order,null);}@Override
public void saveOrder(Order order){
orderDAO.saveOrder(order,primaryJdbcTemplate);
orderDAO.saveOrder(order,secondaryJdbcTemplate);}}