Mybatis-Plus的多数据源你了解吗

多数据源

创建数据库

CREATE DATABASE mybatis_plus_1;
USE mybatis_plus_1;
CREATE TABLE product
(
    id BIGINT(20) NOT NULL COMMENT '主键id',
    NAME VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称',
    price INT(11) DEFAULT 0 COMMENT '价格',
    VERSION INT(11) DEFAULT 0 COMMENT '乐观锁版本号',
    PRIMARY KEY (id)
);

删除表

USE mybatis_plus;
DROP TABLE IF EXISTS product;

插入数据

INSERT INTO product (id, NAME, price) VALUES (1, '外星人', 100);

新建个工程。步骤和之前的一样

导入依赖

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

修改application.yml

spring:
  # 配置数据源信息
  datasource:
    dynamic:
      # 设置默认的数据源或数据源组,默认值即为master
      primary: master
      # 严格匹配数据源,默认false,true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&serverTimezone=GMT%2B8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: "011012"
        save_1:
          url: jdbc:mysql://localhost:3306/mybatis_plus_1?useSSL=false&serverTimezone=GMT%2B8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: "011012"

创建文件包pojo

package com.example.pojo;
import lombok.Data;
@Data
public class Product {
    private Integer id;
    private  String name;
    private Integer price;
    private Integer version;
}
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
//所有无参构造和get方法和set方法还有哈希库方法注解(lombok)
//有参构造方法注解(@AllArgsConstructor)
@Data
@TableName("t_user")
public class User {
    //将该属性对应的字段指定为主键
    @TableId(value = "uid",type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private Integer sex;
}

创建文件包mapper(都是接口)

package com.example.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.pojo.Product;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductMapper extends BaseMapper<Product> {
}
package com.example.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.pojo.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}

创建文件包Service

package com.example.Sevice;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.pojo.Product;
public interface ProductService extends IService<Product> {
}
package com.example.Sevice;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.pojo.User;
public interface UserService extends IService<User> {
}

在这个包下创建文件包impl

package com.example.Sevice.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.mapper.UserMapper;
import com.example.pojo.User;
import org.springframework.stereotype.Service;
@Service
@DS("master")
public class UserService  extends ServiceImpl<UserMapper, User> implements com.example.Sevice.UserService {
}
package com.example.Sevice.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.Sevice.ProductService;
import com.example.mapper.ProductMapper;
import com.example.pojo.Product;
import lombok.Data;
import org.springframework.stereotype.Service;
@Service
@DS("save_1")
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}

写测试文件

@Autowired
    private UserService userService;
    @Autowired
    private ProductService productService;
    @Test
    public void test1(){
        System.out.println(userService.getById(1));
        System.out.println(productService.getById(1));
    }

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Mybatis plus 配置多数据源的实现示例

    记得面试时候,有面试官会问道,你们多数据源是怎么实现的呀........,一阵蒙蔽中,然后说道我们之前项目中,没有用到多数据源. 所幸,目前做得项目中有一个业务逻辑中,用到多个数据库数据情况,多数据源华丽上线. 一. mybatis plus 因为我们项目是springboot+mybatis plus,有些人一看,mybatis还知道对吧,mybatis plus是什么鬼,其实字面意思可以理解,就是对mybatis进行一些功能改造,一些封装升级,然后用起来特别方便. 核心功能的升级主要是以下三

  • mybatis plus动态数据源切换及查询过程浅析

    mybatis plus多数据源切换 mybatis plus多数据源切换使用注解 @DS DS注解作为多数据源切点,具体实现作用主要由两个类完成 DynamicDataSourceAnnotationAdvisor DynamicDataSourceAnnotationInterceptor DS多数据源切换实现 1.DynamicDataSourceAnnotationAdvisor类实现切面配置,其中AnnotationMatchingPointcut用于寻找切点,进入可看到支持类和方法的

  • MybatisPlus多数据源及事务解决思路

    关于多数据源解决方案 目前在SpringBoot框架基础上多数据源的解决方案大多手动创建多个DataSource,后续方案有三: 继承org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource,使用AOP切面注入相应的数据源 ,但是这种做法仅仅适用单Service方法使用一个数据源可行,如果单Service方法有多个数据源执行会造成误读. 通过DataSource配置 JdbcTemplateBean,直接使用 Jdb

  • MyBatis-Plus实现多数据源的示例代码

    多数据源的目的在于一个代码模块可调用多个数据库的数据进行某些业务操作. MyBatis-Plus开发者写了一个多数据源叫dynamic-datasource-spring-boot-starter,非常简单易用. dynamic-datasource-spring-boot-starter文档 官方文档部分截图: 第三方集成的,基本上是目前比较主流的(用的比较多). 一.添加Maven依赖 <dependency> <groupId>com.baomidou</groupId

  • SpringBoot+Mybatis plus实现多数据源整合的实践

    SpringBoot 版本为1.5.10.RELEASE,Mybatis plus 版本为2.1.8. 第一步:填写配置信息: spring: aop: proxy-target-class: true auto: true datasource: druid: # 数据库 1 db1: url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zer

  • SpringBoot整合Mybatis Plus多数据源的实现示例

    目录 导读 添加依赖 application.properties 2种方式创建DataSource Master配置,使用druid连接池 Slave配置 启动类 演示 导读 有一个这样子的需求,线上正在跑的业务,由于业务发展需要,需重新开发一套新系统,等新系统开发完成后,需要无缝对接切换,当初具体设计见草图. 添加依赖 <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <

  • Spring与Mybatis相结合实现多数据源切换功能

    废话不多说,关键代码如下所示: 1. 代码: DbContextHolder public class DbContextHolder { //线程安全的ThreadLocal private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static void setDbType(String dbType) { contextHolder.set(dbType

  • Spring Boot + Mybatis多数据源和动态数据源配置方法

    网上的文章基本上都是只有多数据源或只有动态数据源,而最近的项目需要同时使用两种方式,记录一下配置方法供大家参考. 应用场景 项目需要同时连接两个不同的数据库A, B,并且它们都为主从架构,一台写库,多台读库. 多数据源 首先要将spring boot自带的DataSourceAutoConfiguration禁掉,因为它会读取application.properties文件的spring.datasource.*属性并自动配置单数据源.在@SpringBootApplication注解中添加ex

  • SpringMVC Mybatis配置多个数据源并切换代码详解

    这篇文章主要介绍了SpringMVC Mybatis配置多个数据源并切换代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近公司一个项目需要连接两个数据库(A和B)操作,有的模块查询A库,有的模块查询B库,因此需要改造下,项目后台用的是SpringMVC+Mybatis+MySQL架构,折腾了两天后终于搞定了,在这里记录过改造过程. 使用场景 多数据源的使用的场景一般有: 主从数据库切换 读写分离 兼容旧库 实现原理 Spring2.x

  • Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解

    依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>p6spy</groupId>

  • springboot mybatis调用多个数据源引发的错误问题

    目录 springboot mybatis调用多个数据源错误 报错 解决方法 springboot-mybatis多数据源及踩坑 springboot项目结构如下 springboot配置文件内容如下 动态数据源的配置类如下 最关键的来了 springboot mybatis调用多个数据源错误 报错 'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker': Invocation of init meth

  • 详解Spring Boot整合Mybatis实现 Druid多数据源配置

    一.多数据源的应用场景 目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢? Druid 是 Java 的数据库连接池组件.Druid 能够提供强大的监控和扩展功能.比如可以监控 SQL ,在监控业务可以查询慢查询 SQL 列表等.Druid 核心主要包括三部分: 1. DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系. 2. DruidDataSource 高效可管理的数据库连接池 3. SQLParser 当业务数据量达

  • 通过springboot+mybatis+druid配置动态数据源

    一.建数据库和表 1.数据库demo1放一张user表 SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NU

  • Mybatis注解实现多数据源读写分离详解

    首先需要建立两个库进行测试,我这里使用的是master_test和slave_test两个库,两张库都有一张同样的表(偷懒,喜喜),表结构 表名 t_user | 字段名 | 类型 | 备注 | | :------: | :------: | :------: | | id | int | 主键自增ID | | name | varchar | 名称 | 表中分别添加两条不同数据,方便测试 主数据库记录name为xiaobin,从库为xiaoliu 开始使用Springboot 整合mybati

随机推荐