MybatisPlus多数据源和MybatisX插件

目录

[11 多数据源](#11 多数据源)

[11.1 介绍](#11.1 介绍)

[11.2 代码实现](#11.2 代码实现)

[12 MyBatisX插件](#12 MyBatisX插件)


11 多数据源

11.1 介绍

  1. 适用于多种场景:纯粹多库、读写分离、 一主多从、 混合模式等
  2. 下面会模拟一个纯粹多库的一个场景,其他场景类似
  3. 场景说明:
    我们创建两个库,分别为: mybatis_plus(以前的库不动)与mybatis_plus_1 (新建),将
    mybatis_plus库的product表移动到mybatis_plus_1库,这样每个库一张表,通过一个测试用例 分别获取用户数据与商品数据,如果获取到说明多库模拟成功

11.2 代码实现

  1. 创建数据库及表
    创建数据库mybatis_plus_1和表tx_product。可以直接把以前的表移动到新的数据库,这个可以直接复制原来的表。

    删除MyBatis_plus的tx_product表。这里使用该表名代替删除表。

  2. 导入依赖

    <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.5.2</version> </dependency>
  3. 配置yml文件
    需要注释掉之前的数据库连接,添加新配置

    spring:

    配置数据源信息

    datasource:
    dynamic:
    # 设置默认的数据源或者数据源组 ,默认值即为master
    primary: master
    # 严格匹配数据源 ,默认false.true未匹配到指定数据源时抛异常 ,false使用默认数据源
    strict: false
    datasource:
    master:
    # 配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    # 配置连接数据库信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: '036520'
    slave_1:
    # 配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    # 配置连接数据库信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus_1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: '036520'

  4. 创建service

  5. 测试

    @Test
    public void testDynamicDataSource(){
    System.out.println(userService.getById(1L));
    System.out.println(productService.getById(1L));
    }


因为上面只配置了yml,没有配置注解指定数据源。所以走的就是yml里配置的默认数据源

  1. 添加注解
    因为两个表分别在两个不同的数据库里,所以需要添加注解,指定不同的数据源。
    如果是调用service层里的方法,那么在service和mapper中配置都一样,因为service层最终也是去掉mapper中的代码。



    但是如果是直接调mapper中的代码,只能写在mapper中不然还是会报错,说找不到。
  2. 测试
    再次执行上面的测试方法,此时查询成功。

    注:如果想要实现读写分离,将写操作方法加上主库数据源,读操作方法加上从库数据源,自动切换,就能实现读写分离。

12 MyBatisX插件

  1. MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。
  2. 但是在真正开发过程中, MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表 联查,我们就需要自己去编写代码和SQL语句,我们该如何快速的解决这个问题呢,这个时候可 以使用MyBatisX插件。
  3. MyBatisX一款基于 IDEA 的快速开发插件,为效率而生。
  4. MyBatisX插件用法:https://baomidou.com/guides/mybatis-x/
  5. 具体的安装步骤,见++2 入门案例++2.4
相关推荐
LSL666_1 天前
MybatisPlus——通用枚举
数据库·mybatisplus
LSL666_1 天前
MybatisPlus——代码生成器
数据库·mybatisplus
LSL666_2 天前
MybatisPlus条件构造器(上)
java·数据库·mysql·mybatisplus
LSL666_2 天前
MybatisPlus条件构造器(下)
java·开发语言·windows·mybatisplus
LSL666_4 天前
IService——查询(下)
java·开发语言·数据库·mybatisplus·iservice
LSL666_5 天前
IService——删除
java·开发语言·mybatisplus·iservice
LSL666_9 天前
BaseMapper——新增和删除
java·开发语言·mybatis·mybatisplus
LSL666_9 天前
IService——使用和新增
java·开发语言·mybatisplus
LSL666_9 天前
5 MySQL驱动类选择与数据库连接 URL 时区配置
数据库·mysql·mybatis·mybatisplus