ShardingSphere-Sharding-JDBC水平分库(2)| 学习笔记

简介: 快速学习ShardingSphere-Sharding-JDBC水平分库(2)。

开发者学堂课程【数据库中间件ShardingSphere详解ShardingSphere-Sharding-JDBC水平分库(2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/666/detail/11249


ShardingSphere-Sharding-JDBC水平分库(2

 

内容介绍:

一.添加操作

二.查询操作

 

在上节课程中已经配置策略,下面编写测试方法,测试水平分库效果。依旧在项目中text中找到测试类,在其中编写两个方法一个是添加方法一个是查询方法,验证水平分库效果。首先把之前编写测试水平分表的代码增加注释,在上面重新编写测试方法。使用编写的方法测试水平分库。

 

一.添加操作

首先编写添加操作,@Test

Public void addCoursedb () {

}

在其中编写添加代码,先编写方法在创建一个循环,编写方法与前面课程中对水平分表添加测试代码类似,可以直接复制然后快速修改,首先创建一个对象,添加课程名称例如javademo;下面的值非常重要,在进行水平分库是需要根据 user_id 的值进行分库,如果如果user_id 是偶数添加到edu_db_1 数据库中,如果 user_id 是奇数添加 edu_db_2数据库中,现在赋值100为偶数,最后添加课程状态。现在进行分析,添加的数据中 user_id 值为100是偶数,肯定把数据添加到 edu_db_1 中,然后根据 cid 值选择表如果 cid 值为偶数添加到 course_1 中如果 cid 值为奇数添加到 course_2中。不管怎么样,肯定操作  edu_db_1 中的表,edu_db_2 中应该没有数据。

@Test

public void addCourseDb (){

Course course = new Course();

course.setCname("javademo";

course setUserld (100L;

course.setCstatus("Normal”);

courseMapper.insert(course);

}

执行代码查看结果,执行结束没有报错,查看数据部分有100id;目前操作的数据库为 m1,即操作edu_db_1 数据库;cid 值为奇数,把数据存放到course_2 中。即可以在数据库 edu_db_1 course_2 中找到添加的数据。满足制定的规则,user_id 是偶数操作 m1 数据库即 edu_db_1数据库,cid 是奇数存放到 course_2中。在数据库 edu_db_1 course_2 中可以找到添加的数据。查看其他表中并无数据,只有edu_db_1 course_2中有数据。符合制定的规则。

7.1.png

 

添加完成后继续测试,把user_id 值更改为 111111为奇数会操作edu_db_2 数据库,为了区分上面的测试把课程状态修改为 Normal1,执行代码,查看最终是否满足要求。执行结果操作 m2数据库即edu_db_2数据库,cid 值为奇数操作 course_2表,可以在edu_db_2数据库的course_2表找到添加的数据。

7.2.png

 

即完成编写的策略,根据库先进行水平分库根据 user_id 奇偶数判断,在做水平分表根据 cid 奇偶数判断,最终把数据放入不同数据库中的不同表中。目前效果做到水平分库,水平分表;其过程都是在配置文件中做的策略的配置。

 

二.查询操作

完成添加操作,下面进行查询操作。@Test

public void findCourseDb(){

}

在查询是注意现在规则中有两个值,一个是user_id一个是cid;根据user_id cid 做查询才可以得到最终结果。首先编写条件构造器,设置 user_id 的值wrapper.eq(column:"user_id",val:100L);然后设置 cid 的值

wrapper.eg(column:"cid",val:465162909769531393L)。最终调用方法,courseMapper 中的 select One 方法在返回 course;再输出对象即可完成查询操作。如果可以正常执行会怎么做,user_id是偶数会操作 edu_db_1cid 是奇数会查找表 course_2;最终定位到edu_db_1 的表 course_2。查看效果能不能准确定位数据库和表。执行代码查看结果,执行成功查看数据是否有误,目前查找m1course_2,通过策略判断在edu_db_1的表 course_2找到数据然后进行返回,因为策略已经配置。

7.3.png

这是两个最基本的测试方法,现在已经编写完成。现在通过 Shard ing-JDBC完成对水平分库,水平分表后数据的操作,主要部分是在配置文件中配置分库或分表的策略,例如在水平分库配置文件中分库策略,分表策略,分布情况等还可以配置多个数据源。通过 Shard ing-JDBC完成对水平分库,水平分表。

相关文章
|
9月前
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 2
Myqsql使用Sharding-JDBC分表分库和读写分离
98 0
|
9月前
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 1
Myqsql使用Sharding-JDBC分表分库和读写分离
67 0
|
10月前
|
SQL druid Java
JAVA进阶 JDBC技术学习笔记(四)
JAVA进阶 JDBC技术学习笔记(四)
|
10月前
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
48 0
|
10月前
|
SQL druid Java
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(四)
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(四)
|
10月前
|
SQL 存储 Java
[Java]JDBC学习笔记(尚硅谷康师傅JDBC) (二)
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(二)
|
1月前
|
Java 关系型数据库 MySQL
JDBC学习笔记
JDBC学习笔记
|
8月前
|
Java 数据库连接 数据库
JDBC学习笔记2
JDBC学习笔记2
38 0
|
8月前
|
SQL Java 关系型数据库
JDBC学习笔记
JDBC学习笔记
113 0
|
Java 关系型数据库 MySQL
《项目实战》使用JDBC手写分库
《项目实战》使用JDBC手写分库
12185 6