springboot框架mybatis多数据源整合

1、创建springboot项目,设置配置文件

server:
  port: 2080
logging:
  level:
    cn.mrxionge.bootdemo: debug
    org.springframework.web: debug
    org.springframework.data: debug
mybatis-plus:
  executor-type: simple
spring:
  datasource:
    #配置hikari连接池
    hikari:
      minimum-idle: 4
      maximum-pool-size: 16
      connection-timeout: 10000
      idle-timeout: 30000
      connection-init-sql: set names utf8mb4
    #动态数据源配置
    dynamic:
      #主数据源
      primary: a01
      datasource:
        #数据源a01
        a01:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/a01?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root
        #数据源a02
        a02:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/a02?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root
        #数据源a03
        a03:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/a03?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root

2、创建3个数据库(a01、a02、a03)表为:user 字段:id、name、age、add...

3、pom文件引入jar依赖

		<!-- mysql依赖 -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>5.1.21</version>
		</dependency>
		
		<!-- MyBatis Plus和Dynamic Datasource的组合 -->
		<dependency>
		    <groupId>com.baomidou</groupId>
		    <artifactId>mybatis-plus-boot-starter</artifactId>
		    <version>3.0.6</version>
		</dependency>
		<dependency>
		    <groupId>com.baomidou</groupId>
		    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
		    <version>2.4.2</version>
		</dependency>

4、创建UserInfo实体类

package com.example.domain;

public class UserInfo {
	
	private int id;
	
	private int age;
	
	private String add;
	
	private String name;
	
	private String remark;

	public UserInfo() {
		super();
		// TODO Auto-generated constructor stub
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAdd() {
		return add;
	}

	public void setAdd(String add) {
		this.add = add;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public UserInfo(int id, int age, String add, String name, String remark) {
		super();
		this.id = id;
		this.age = age;
		this.add = add;
		this.name = name;
		this.remark = remark;
	}

	@Override
	public String toString() {
		return "UserInfo [id=" + id + ", age=" + age + ", add=" + add + ", name=" + name + ", remark=" + remark + "]";
	}
	
	
	
}

5、创建Service类

package com.example.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.domain.UserInfo;
import com.example.mapper.MapperA01;
import com.example.mapper.MapperA02;
import com.example.mapper.MapperA03;

@Service
public class AppService {
	
	@Autowired
	private MapperA01 mapperA01;
	
	@Autowired
	private MapperA02 mapperA02;
	
	@Autowired
	private MapperA03 mapperA03;
	
	/**
	 * 
	 * @return  A01方法
	 */
	public List<UserInfo> getUser01() {
        return mapperA01.getAllUser();
    }
	
	/**
	 * 
	 * @return  A02方法
	 */
	public List<UserInfo> getUser02() {
        return mapperA02.getAllUser();
    }
	
	/**
	 * 
	 * @return  A03方法
	 */
	public List<UserInfo> getUser03(){
		return mapperA03.getAllUser();
	}
	
}

6、创建mapper(MapperA01、MapperA02、MapperA03)接口

package com.example.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.domain.UserInfo;

@DS(value = "a01")
@Mapper
@Repository
public interface MapperA01 {
	
	@Select("SELECT * FROM user")
    List<UserInfo> getAllUser();
	
}

7、编写AppController

package com.example.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.domain.UserInfo;
import com.example.service.AppService;

@RestController
@SuppressWarnings("all")
public class AppController {
	
	@Autowired
	private AppService appService;
	
	@GetMapping(path = "/get01")
	public List<UserInfo> get01() {
		return appService.getUser01();
	}
	
	@GetMapping(path = "/get02")
	public List<UserInfo> get02() {
		return appService.getUser02();
	}
	
	@GetMapping(path = "/get03")
	public List<UserInfo> get03() {
		return appService.getUser03();
	}
	
	
}

8、启动项目验证结果

2019-12-20 11:38:16.003  INFO 8720 --- [           main] com.zaxxer.hikari.HikariDataSource       : a01 - Starting...
2019-12-20 11:38:16.208  INFO 8720 --- [           main] com.zaxxer.hikari.HikariDataSource       : a01 - Start completed.
2019-12-20 11:38:16.209  INFO 8720 --- [           main] com.zaxxer.hikari.HikariDataSource       : a02 - Starting...
2019-12-20 11:38:16.224  INFO 8720 --- [           main] com.zaxxer.hikari.HikariDataSource       : a02 - Start completed.
2019-12-20 11:38:16.224  INFO 8720 --- [           main] com.zaxxer.hikari.HikariDataSource       : a03 - Starting...
2019-12-20 11:38:16.238  INFO 8720 --- [           main] com.zaxxer.hikari.HikariDataSource       : a03 - Start completed.
2019-12-20 11:38:16.239  INFO 8720 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 初始共加载 3 个数据源
2019-12-20 11:38:16.239  INFO 8720 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 动态数据源-加载 a03 成功
2019-12-20 11:38:16.239  INFO 8720 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 动态数据源-加载 a02 成功
2019-12-20 11:38:16.239  INFO 8720 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 动态数据源-加载 a01 成功
2019-12-20 11:38:16.239  INFO 8720 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 当前的默认数据源是单数据源,数据源名为 a01

9、访问查看

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值