ope电竞app官网_ope体育电子竞技游戏平台
ope电竞app官网

汤圆和元宵的区别,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏平台

admin admin ⋅ 2019-11-05 16:25:15

SpringBoot现在是许多许多公司使用的后端结构,由于它建立快,能更好、更快速的整合其他第三方。那么跟着事务的不断扩展,事务量的添加,这时分就会牵扯到分库分表,尽管这个词听起来很熟悉,作为程序员也很简单了解,可是我想应该也有不少读者没触摸过分库分表,今日咱们不聊怎么分库分表,而是聊SpringBoot怎么整合多个数据源的工作。也便是怎么接入不同的(多个)数据库。

咱们直接开端,纠正胯部广大的睡姿咱们直接创立一个洁净的SpringBoot使用。


org.springfr汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道amework.boot
spring-boot-starter-parent
2.1.0.RELEASE



org.springframework.boot
spring-boot-starter-web


org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2


mysql
mysql-connector-java
runtime


org观阴.springframework.boot
spring-boot-starter-jdbc


org.projectlombok
lombok
1.18.8

引进需求的maven坐标,那么咱们这个工程就算建立起来了,接下来便是装备,怎么让SpringBoot整合两个Mysql数据源。首要咱们在本地创立两个数据库test1和test2,一起在里面创立两个结构相同的你色表。

CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(100) CHARACTER SET utf8 NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '暗码',
`create_time` datetime DEFAULT NULL COMMENT '创立时刻',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

在咱们的工程中装备appl114家服网ication.yml文件,将数据库的信息装备进去

spring:
datasource:
test1:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 12教官不要34
test2:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost女性光身:3306/test2?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 1234

接下来便是写咱们的装备类了,这也是整合多个数据源最为要害的部分。

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.jdbc.datasource.DataSourceTransactionManager;
impo几巴rt javax.sql.DataSource;
/**
* @ClassName DataSource2Config
* @Description TODO
* @Auther lbt
* @Date 2019/6/28/028 10:07
* @Version 1.0
*/
@Configuration
@MapperScan(basePackages = "com.example.mapper.test1", sqlSessionFactoryRef = "test1SqlSessionFactory")
public蜂窝玉米的做法视频 class DataSource1Config {
@Bean(name = "test1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test1")
@Primary
public DataSource test1DataSource() {
return DataSourc汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道eBuilder.create().build();
}
@Bean(name = "test1SqlSessionFactory")
@Primary
public SqlSessionFactory test1SqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(d吊奶ataSource);
return bean.getObject();
}
@Bean(name = "test1TransactionManager")
@Primary
public DataSourceTransacti童颜巨onManager test1TransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test1SqlSessionTemplate")
@Primary
public SqlSessionTemplate test1SqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

第二个数据源的装备

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFact汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道oryBean;
import儿童伪娘 樱菲迪org.mybatis.spring.SqlSessionTemp杜若祎late;
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.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.example.mapper.test2", sqlSessionFactoryRef = "test2SqlSessionFactory")
public class DataSource2Config {
@Bean(name = "test2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test2")
public DataSource test2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test2SqlSessionFactory")
public SqlSess玩女生ionFactory test2SqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception {
S汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道qlSessionFactoryBean bean = new SqlSessionFacto732357ryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "test2TransactionManager")
public DataSourceTransactionManager test2TransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test2SqlSessionTemplate")
public SqlSessionTemplate test2SqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

这样咱们整个的装备其实就算好了,咱们接下来写一个Controller类来测验一下,咱们整合的数据源是不是真的可联公乐以用呢?

@RestController
public class TestController {
@Autowired
汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道private User1Service user1Service;
@Autowired
private User2Service user2Service;
@RequestMapping("/user1")
public Object user1Controller() {
List all = user1Service.fin汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道dAll();
return all;
}
@RequestMapping("/user2")
public Object user2Controller() {
List all = user2Se海贼王之冰帝来临rvice.findAll();
return all;
}
}

我写了个两个Controller汤圆和元宵的差异,人间正道是沧桑-ope电竞app官网_ope体育电子竞技游戏渠道办法,别离拜访不同的接口,咱们来看下拜访小企链成果。

当咱们拜访user1的时分回来如下:



当咱们拜访user2的时分拜访如下



看到这儿其实咱们的整个整合也就完成了, 尽管看起来很简单,可是你假如没写过的确会走许多坑,我刚整合的时分就遇到了许多坑,为了协助我们重复采坑,共享出来供我们参阅.

重视我,后续更多干货奉上!

相关新闻

admin

admin

TA太懒了...暂时没有任何简介

精彩新闻