IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot Mysql 动态切换数据源 -> 正文阅读

[Java知识库]springboot Mysql 动态切换数据源

主要功能: 实现了主表(mysql1)写数据,从表(mysql2)读数据。

使用工具 https://github.com/baomidou/dynamic-datasource-spring-boot-starter

本人:阿里云环境主从数据库已经部署好,看博客的小伙伴可以直接使用下面的yml 配置文件。

想自己部署的参考这篇博客本人 https://zhaideyou.blog.csdn.net/article/details/123821990

创建项目: 引入依赖

<dependencies>
    <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>2.1.4</version>
    </dependency>
    
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
      datasource:
        master:
          url: jdbc:mysql://39.103.170.254:33061/javaboydb
          username: root
          password: 123
        slave:
          url: jdbc:mysql://39.103.170.254:33062/javaboydb
          username: root
          password: 123
@Data
public class User {
    private int id;
    private String username;
}
@Mapper
public interface UserMapper {
    @Insert( "insert into javaboydb.user(username) values (#{username})" )
    long addUser(String username);
    @Select( "select * from javaboydb.user" )
    List<User> getAllUser();
}
public interface UserService {

    long addUser(String username);

    List<User> getAllUser();
}
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    @DS( "master" )
    public long addUser(String username) {
        return userMapper.addUser( username );
    }

    @Override
    @DS( "slave" )
    public List<User> getAllUser() {
        return userMapper.getAllUser();
    }
}

测试:

@Autowired
private UserService userService;
@Test
void testAddUser(){
    System.out.println( userService.addUser( "赵六" ) );
}

@Test
void getAllUser(){
    List<User> userList = userService.getAllUser();
    userList.forEach( System.out::println );
}

使用mybatis-plus 测试

添加依赖,

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>
@Mapper
public interface UserMapper2 extends BaseMapper<User> {
}
public interface UserService2  extends IService<User> {


}
@Service
public class UserServiceImpl2 extends ServiceImpl<UserMapper2, User> implements UserService2 {

    @Override
    @DS( "slave" )
    public List<User> list() {
        System.out.println("使用读数据库");
        return super.list();
    }

    @Override
    @DS( "master" )
    public boolean save(User entity) {
        return super.save( entity );
    }
}

测试

/**
 * Mybatis-plus 测试
 *
 */
@Test
@DisplayName( "使用mybatis-plus 测试" )
void testAddUser2(){

    userService2.save(new User( (int) Math.random(),"j江南一点雨是大佬"));
}

/**
 * Mybatis-plus 测试
 *
 */
@Test
@DisplayName( "使用mybatis-plus 测试" )
void saveUserTest(){
    userService2.list().forEach( System.out::println );
}

自己用数据库连接工具查看数据库。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:09:58  更:2022-03-30 18:12:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:38:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码