#### 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
