Spring Boot整合Mybatis-Plus快速入门(五)

本文详细介绍了如何在Spring Boot项目中使用MyBatis-Plus配置多数据源,包括引入动态数据源依赖,配置主从数据源,以及在UserService中通过@DS注解切换数据源进行查询和插入操作的实现。测试部分展示了如何测试UserService的查询和保存功能。
摘要由CSDN通过智能技术生成

目录

MyBatis-Plus多数据源配置

引言

引入依赖

配置数据源

实现

测试


 

MyBatis-Plus多数据源配置

引言

         为了确保数据库产品的稳定性,很多数据库拥有双机热备功能,所谓双机热备功能其实就是由第一台数据库服务器提供增删改功能,由第二台服务器提供查询功能。如下图所示:

引入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>

配置数据源

在application.properties中配置数据源,这里以两个不同的数据库作为主从数据源

spring.datasource.dynamic.primary=master

spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=UTF-8
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=root

spring.datasource.dynamic.datasource.slave_1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.slave_1.url=jdbc:mysql://localhost:3306/mp1?useUnicode=true&characterEncoding=UTF-8
spring.datasource.dynamic.datasource.slave_1.username=root
spring.datasource.dynamic.datasource.slave_1.password=root

实现

 创建一个UserService,添加查询和插入方法

package com.cheny.service;

import com.cheny.pojo.User;

import java.util.List;

/**
 * @Author 陈雲鑫
 * @Date 2021/7/21 15:45
 */
public interface UserService {

	public List<User> queryAll();

	public void save(User user);
}

 通过@DS注释可以更换所使用的数据源,@DS注释遵循局部优先原则

package com.cheny.service.Impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.cheny.mapper.UserMapper;
import com.cheny.pojo.User;
import com.cheny.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

/**
 * @Author 陈雲鑫
 * @Date 2021/7/21 15:46
 */
// 增删改使用主库
@Service
@DS(value = "master")
public class UserServiceImpl implements UserService {

	@Autowired(required = false)
	UserMapper userMapper;

	// 查询使用从库
	@Override
	@DS(value = "slave_1")
	public List<User> queryAll() {
		List<User> users = userMapper.selectList(null);
		return users;
	}

	@Override
	public void save(User user) {
		userMapper.insert(user);
	}
}

 

测试

package com.cheny;

import com.cheny.pojo.User;
import com.cheny.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

/**
 * @Author 陈雲鑫
 * @Date 2021/7/21 15:51
 */
@SpringBootTest
public class testUserService {

	@Resource(name = "userServiceImpl")
	UserService userService;
	
	@Test
	public void test(){
		User user1 = new User(99,"test",20);
		userService.save(user1);
		userService.queryAll().forEach(user -> System.out.println(user));
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值