Mybatis plus无介绍快使用,多数据源的使用(八)
- 问题背景
-
-
- Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一)
- Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)
- Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三)
- Mybatis-plus无介绍快使用,注解的使用(四)
- Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五)
- Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六)
- Mybatis-plus无介绍快使用,枚举变量的使用附源码(七)
- Mybatis-plus无介绍快使用,多数据源的使用(八)
- Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九)
- Mybatis-plus无介绍快使用,可继承通用的基础实体类(十)
-
- 多数据源的使用
- Lyric: 在一处被废弃的白蚁丘
问题背景
因为mybatis plus非常的流行,虽然平常mybatis generator也够用了,但多会一个,看别人的代码就轻松一点
注意事项:
- 官方网站:https://baomidou.com/
- 官方文档:https://baomidou.com/pages/24112f/
- MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id,实体类entity属性都使用对象,使用Long,不能使用long,不然雪花算法会失效
Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一)
Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)
Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三)
Mybatis-plus无介绍快使用,注解的使用(四)
Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五)
Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六)
Mybatis-plus无介绍快使用,枚举变量的使用附源码(七)
Mybatis-plus无介绍快使用,多数据源的使用(八)
Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九)
Mybatis-plus无介绍快使用,可继承通用的基础实体类(十)
多数据源的使用
适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等
场景说明:
我们创建两个库,分别为:mybatis_plus
(以前的库不动)与mybatis_plus_1
(新建),将mybatis_plus库的product
表移动到mybatis_plus_1库,这样每个库一张表,通过一个测试用例分别获取用户数据与商品数据,如果获取到说明多库模拟成功
1.创建数据库及表
- 创建数据库
mybatis_plus_1
和表`product
CREATE DATABASE `mybatis_plus_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
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)
);
- 添加测试数据
INSERT INTO product (id, NAME, price) VALUES (1, '外星人笔记本', 100);
- 删除
mybatis_plus
库中的product
表
use mybatis_plus;
DROP TABLE IF EXISTS product;
2.新建工程引入依赖
自行新建一个Spring Boot工程并选择MySQL驱动及Lombok依赖
引入MyBaits-Plus的依赖及多数据源的依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
3.编写配置文件
spring:
# 配置数据源信息
datasource:
dynamic:
# 设置默认的数据源或者数据源组,默认值即为master
primary: master
# 严格匹配数据源,默认false.true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
slave_1:
url: jdbc:mysql://localhost:3306/mybatis_plus_1?characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
4.创建实体类
- 新建一个
User
实体类(如果数据库表名有t_前缀记得配置)
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
- 新建一个实体类
Product
@Data
public class Product {
private Long id;
private String name;
private Integer price;
private Integer version;
}
5.创建Mapper及Service
- 新建接口
UserMapper
public interface UserMapper extends BaseMapper<User> {}
- 新建接口
ProductMapper
public interface ProductMapper extends BaseMapper<Product> {}
- 新建Service接口
UserService
指定操作的数据源
@DS("master") //指定操作的数据源,master为user表
public interface UserService extends IService<User> {}
- 新建Service接口
ProductService
指定操作的数据源
@DS("slave_1")
public interface ProductService extends IService<Product> {}
- 自行建立Service的实现类
6.编写测试方法
记得在启动类中添加注解
@MapperScan()
class TestDatasourceApplicationTests {
@Resource
UserService userService;
@Resource
ProductService productService;
@Test
void contextLoads() {
User user = userService.getById(1L);
Product product = productService.getById(1L);
System.out.println("User = " + user);
System.out.println("Product = " + product);
}
}
使用druid连接池
作为程序员第 156 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric: 在一处被废弃的白蚁丘
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110719.html