#### 1.首先pom.xml配置文件
~~~
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 測試 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- web組件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- mysql依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- springboot 集成lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
~~~
#### 2.創建兩個數據庫test01和test02,一個數據庫呢對應一個數據源這時候就不能使用默認的數據源了。
test1 user1 test2 user2
#### 3.說下多數據源:例如公司分為兩個數據庫,一個數據庫專門存放共同的配置文件,一個數據庫垂直業務數據庫,垂直是根據業務劃分的,在一個項目中有多個數據源指不同庫jdbc連接,多數據源劃分可以分包劃分(業務)、注解方式劃分。
#### 4.現在application.properties配置文件中寫這兩個數據源,注意前面配置的名字要小心:
~~~
spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test01
spring.datasource.test1.username=root
spring.datasource.test1.password=123456
spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test2.jdbc-url=jdbc:mysql://localhost:3306/test02
spring.datasource.test2.username=root
spring.datasource.test2.password=123456
spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver
~~~
#### 5.創建兩個包test01和test02,然后每個包里面包含mapper、service,以test01包下的文件為例,test02包下的一樣只需要把1改為2.
~~~
UserMapperTest01.java:
@Mapper
public interface UserMapperTest01 {
@Select("select * from user where name=#{name}")
User findByName(@Param("name")String name);
@Insert("insert into user(name,age) values(#{name},#{age})")
int insert(@Param("name")String name,@Param("age")Integer age);
}
~~~
UserServiceTest01.java:
~~~
@Service
public class UserServiceTest01 {
@Autowired
private UserMapperTest01 userMapperTest01;
public int insertUser(String name,Integer age) {
int insertUserResult=userMapperTest01.insert(name, age);
int i=1/age;
System.out.println(insertUserResult);
//怎么驗證事務開啟成功
return insertUserResult;
}
}
~~~
#### 6.創建兩個datasource的配置文件,DataSource1Config.java和DataSource2Config.java,以1為例,2一樣只需要把 1改為2.
~~~
@Configuration
@MapperScan(basePackages="com.itmayiedu.test01",sqlSessionFactoryRef="test1SqlSessionFactory")
public class DataSource1Config {
@Bean(name="test1DataSource")
@ConfigurationProperties(prefix="spring.datasource.test1")
@Primary
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name="test1SqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource")DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@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);
}
}
~~~
#### 7.Controller層:
~~~
/**
多數據源測試
*/
@RestController
public class MybatisMultiDataSourceController {
@Autowired
private UserServiceTest01 userServiceTest01;
@Autowired
private UserServiceTest02 userServiceTest02;
@RequestMapping("/insertUserTest01")
public Integer insertUserTest1(String name,Integer age) {
return userServiceTest01.insertUser(name, age);
}
@RequestMapping("/insertUserTest02")
public Integer insertUserTest2(String name,Integer age) {
return userServiceTest02.insertUser(name, age);
}
}
~~~
#### 8.啟動類:
~~~
@SpringBootApplication
//@MapperScan(basePackages= {"com.itmayiedu.test01.mapper"})
public class MyBatisApp01 {
public static void main(String[] args) {
SpringApplication.run(MyBatisApp01.class,args);
}
~~~
- springboot(一)--idea開發
- 1.springboot簡介
- 2. 創建springboot項目的三種方式
- 3. springboot項目結構分析(上)
- 4. springboot項目結構分析(下)
- 5. SpringBoot的HelloWorld應用獨立運行
- 6. SpringBoot中的參數設置
- 7. SpringBoot中的Banner設置
- 8. SpringBoot中的參數綁定
- 9. SpringBoot的熱部署
- 10. SpringBoot集成DataSource
- 11.springboot集成mybatis
- 12. springboot與springcloud區別
- 代碼位置
- springboot(二)--eclipse開發
- 1. 創建第一個springboot項目
- 2. 使用@ComponentScan方式啟動
- 3. 使用@SpringBootApplication方式啟動
- 4. SpringBoot靜態資源訪問
- 5. 整合Freemarker視圖層
- 6. SpringBoot整合jsp視圖層
- 7. SpringBoot整合全局捕獲異常
- 8. SpringBoot整合log4j日志記錄
- 9. 使用AOP統一處理Web請求日志
- 10. 集成lombok讓代碼更簡潔
- 11 安裝lombok步驟
- 12. @Async異步執行方法
- 13 @Value自定義參數
- 14 區分不同環境配置文件
- 15 SpringBoot整合Mybatis
- 0 代碼位置
- springboot(二)--eclipse開發2
- 1. 整合@Transactional注解
- 2. SpringBoot-整合多數據源拆分思路
- 3. 使用分包方式拆分數據源
- 4. SpringBoot多數據源事務管理機制
- springboot(三)--idea項目前置
- springcloud