首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java架构之路-(源码)mybatis基本使用

我们也可以继承BaseTypeHandler来重写父类的方法来自定义类型转换。 来一个我自己的简单配置。 子表如果和主表重名,一定给子表起一个别名,而且子表的每一项需要写result,不然没有结果的,但是还不是很好,本来是一个对象一个集合,现在直接变成集合了,我们再来改改。 子表的什么参数等于我们的主表的哪个参数传递过去。 接下来就是我们简单的一对一了(也可以当做一对多,但是没啥卵用的多对一,项目经理让从多往一查的时候,请你吐他。。。)...如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。...但尽力不要用拼接的方式来做,后面我将动态sql会说具体怎么来实现。${}容易被sql注入。所以我们尽力还用占位符的方式来处理我们的SQL。

52720

Demo入门Mycat【面试+工作】

)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里; 下面将从Mycat...多次执行查看全局表,查看日志会发现每次从三个分片中随机取一个执行查询语句;以下三条日志是执行三次的结果: ? 3.表hotnews(自增主键),定义如下: ? 3.1分别在三个数据库中创建表 ?...当第二次执行此查询语句,再查看日志只往一个节点发送了查询语句: ? 5.表customer和orders(父子表关系),定义如下: ? 5.1分别在三个数据库中创建表 ?...5.2父子表关系 childTable 标签用于定义 E-R 分片的子表,通过标签上的属性与父表进行关联; joinKey:插入子表的时候会使用这个列的值查找父表存储的数据节点; parentKey:属性指定的值一般为与父表建立关联关系的列名...程序首先获取joinkey的值,再通过parentKey属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上,从而确定子表存储的位置; 5.3模拟数据的插入 ?

1.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL(五)之DDL(数据定义语言)与六大约束

    前言 前面在数据库的讲解中,其实很多东西都非常的细节,在以前的学习过程中我都是没有注意到的。可能在以后的工作中会碰到所以都是做了记录的。...针对这种情况,总共有两种方法        1)先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除        2)先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表...例如,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们知道他在哪个部门呢?...2.2)、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。       ...2.3)、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。     注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。

    2K90

    数据库中间件之Mycat

    水平切分 水平拆分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中 包含一部分数据。...简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中的某些行切分 到一个数据库,而另外的某些行又切分到其他的数据库中 拆分规则: 按照用户 ID 求模,将数据分散到不同的数据库...通过标签上的属性与父表进行关联。 name String 定义子表的表名。...joinKey String 插入子表的时候会使用这个列的值查找父表存储的数据节点 parentKey String 属性指定的值一般为与父表建立关联关系的列名。...程序首先获取 joinkey 的值,再通过 parentKey 属性指定 的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上。从而确定子表存储的位置。

    72520

    简单易懂的 MyBatis 分库分表方案

    很多分库分表的设计在实现上会尽量将分库分表的逻辑隐藏起来,其实这是毫无必要的。使用者必须知道背后确实进行了分库分表,否则他怎么会无法进行全局的索引查找?他怎么会无法随意进行多表的 join 操作。...在不同的环境中可以将分表数量设置为不同的值,比如在单元测试下分表设为 4 个,而线上可能需要设置为 64 个。帖子表又会被分配到多个库,这里就直接取模分配。...在本例中,帖子表按照 userId 字段 hash 出 64 张表,平均分配到 2 对物理库中,每个物理库包含一个主库和2个从库。...在对数据表的操作过程中,又需要将具体的 partition number 传递过去,如此 MyBatis 才能知道具体操作的是哪个分表。...但是有个问题,我这里只需要这一个类,但是需要引入整个 spring-boot-jdbc-starter 包,有点拖泥带水的感觉。

    8010

    分库分表常见概念解读+Sharding-JDBC实战

    垂直分表 我们知道数据库是以行为单位将数据加载到内存中,这样拆分以后核心表大多是访问频率较高的字段,而且字段长度也都较短,因而可以加载更多数据到内存中,来增加查询的命中率,减少磁盘IO,以此来提升数据库性能...水平分表 水平分表尽管拆分了表,但子表都还是在同一个数据库实例中,只是解决了单一表数据量过大的问题,并没有将拆分后的表分散到不同的机器上,还在竞争同一个物理机的CPU、内存、网络IO等。...在这里插入图片描述 这样以来同一个订单的相关数据就会存在同一个数据库表中,大幅提升数据检索的性能,不仅如此 sharding-jdbc 还支持根据多个字段作为分片健进行分片。...通常在我们的业务中都会使用 t_order 和 t_order_item 等表进行多表联合查询,但由于分库分表以后这些表被拆分成N多个子表。...一张表经过分库分表后被拆分成多个子表,并分散到不同的数据库中,在不修改原业务 SQL 的前提下,Sharding-JDBC 就必须对 SQL进行一些改造才能正常执行。

    1.8K20

    MyCat - 使用篇(5)

    name属性定义逻辑表的表名,这个名字就如同我在数据库中执行create table命令指定的名字一样,同个schema标签中定义的名字必须唯一。...primaryKey属性:该逻辑表对应真实表的主键,例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有配置的DN上;如果使用该属性配置真实表的主键,那么MyCat会缓存主键与具体...name属性 joinKey属性:插入子表的时候会使用这个列的值查找父表存储的数据节点。 parentKey属性:属性指定的值一般为与父表建立关联关系的列名。...程序首先获取joinkey的值,再通过parentKey属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上。从而确定子表存储的位置。...在一个dataHost内可以定义多个writeHost和readHost。但是,如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用。

    60720

    一文快速入门分库分表(必修课)

    垂直分表 我们知道数据库是以行为单位将数据加载到内存中,这样拆分以后核心表大多是访问频率较高的字段,而且字段长度也都较短,因而可以加载更多数据到内存中,来增加查询的命中率,减少磁盘IO,以此来提升数据库性能...水平分库 2、水平分表 水平分表是在同一个数据库内,把一张大数据量的表按一定规则,切分成多个结构完全相同表,而每个表只存原表的一部分数据。...水平分表 水平分表尽管拆分了表,但子表都还是在同一个数据库实例中,只是解决了单一表数据量过大的问题,并没有将拆分后的表分散到不同的机器上,还在竞争同一个物理机的CPU、内存、网络IO等。...扩容的难度和维护量较大,(拆分成几千张子表想想都恐怖)。 一定规则是什么 我们上边提到过很多次 一定规则 ,这个规则其实是一种路由算法,就是决定一条数据具体应该存在哪个数据库的哪张表里。...常见的有 取模算法 和 范围限定算法 1、取模算法 按字段取模(对hash结果取余数 (hash() mod N),N为数据库实例数或子表数量)是最为常见的一种切分方式。

    63520

    手把手 | 如何用Python做自动化特征工程

    这些都是转换,因为它们仅使用来自一个表的信息。...这些操作本身并不困难,但如果我们有数百个变量分布在几十个表中,那么这个过程要通过手工完成是不可行的。理想情况下,我们需要一种能够跨多个表自动执行转换和聚合的解决方案,并将结果数据合并到一个表中。...数据表之间的关系 考虑两张数据表之间关系的最佳方式是用父对子的类比 。父与子是一对多的关系:每个父母可以有多个孩子。...在数据表的范畴中,父表的每一行代表一位不同的父母,但子表中的多行代表的多个孩子可以对应到父表中的同一位父母。...我们已经知道它们是什么了,但我们刚刚用不同的名字来称呼它们!这些只是我们用来形成新功能的基本操作: 聚合:基于父表与子表(一对多)关系完成的操作,按父表分组,并计算子表的统计数据。

    4.3K10

    MySQL(条件约束)

    阿华代码,不是逆风,就是我疯,希望本文内容能帮到你!你们的点赞收藏是我前进最大的动力!!...)有唯一的标识,有助于更容易更快速的找到表中一个特定的主键,用来作为一个记录的身份标识。...mysql服务器构成的“集群”,此时自增主键就无法生效了 6:foreign key(外键约束) (保证一个表中的数据匹配另一个表中的数据的参照完整性) 所以引入外键约束(被约束的表表>叫“子表”...约束是相互的:在删除“父表”中的数据的时候,如果子表中有数据受该父表此数据的约束的话,是删不掉的,要确保子表中没有数据引用父表的记录,才能删除父表上的该数据 关于外键约束还有一个应用场景 应用场景:现在订单表中把商品...1给买走了,那么商品表中要把1号商品给删除掉,但是子表订单表还必须得保存着,怎么办(在引入外键约束的情况下,如何删除商品表中的数据,但是不影响订单表)

    10810

    函数周期表丨筛选丨表丨ALLNOBLANKROW

    函数的用法与ALL函数基本上差不多,返回一个完整的数据表。...] 可以看得出来,这种情况下,父表对于子表的筛选条件不造成影响,二者的结果是一致的。...( '子表'[类别] ) ) 结果: [e847f8365e0746c1ce65ac496f38ad61.png] 这种情况下,父表的筛选效果依然没有生效,对二者结果没有影响。...这是因为,子表中存在父表中不存在的维度数据。 ALL函数会直接为父表添加一行“空行”,这一行ALL函数计算在内。ALLNOBLANKROW则会忽略这一空行,只计算父表中存在的数据。...我给你调货只配了50W的货物,你咋销售了60W?咋回事?小老弟? 分店:大哥,我也不知道啊!要不咱俩来核对一下? 总部&分店:(¥¥%#&&@@!)这咋核对啊!!

    57200

    一文快速入门分库分表中间件 Sharding-JDBC (必修课)

    书接上文 《一文快速入门分库分表(必修课)》,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名,还给我分配了一个长期维护任务...[在这里插入图片描述] 这样以来同一个订单的相关数据就会存在同一个数据库表中,大幅提升数据检索的性能,不仅如此 sharding-jdbc 还支持根据多个字段作为分片健进行分片。...通常在我们的业务中都会使用 t_order 和 t_order_item 等表进行多表联合查询,但由于分库分表以后这些表被拆分成N多个子表。...比如用耳机听音乐,我有个圆头的耳机,可手机插孔却是扁口的,如果我想要使用耳机听音乐就必须借助一个转接头才可以,这个转接头就起到了适配作用。...一张表经过分库分表后被拆分成多个子表,并分散到不同的数据库中,在不修改原业务 SQL 的前提下,Sharding-JDBC 就必须对 SQL进行一些改造才能正常执行。

    73741

    一文快速入门分库分表(必修课)

    [垂直分表] 我们知道数据库是以行为单位将数据加载到内存中,这样拆分以后核心表大多是访问频率较高的字段,而且字段长度也都较短,因而可以加载更多数据到内存中,来增加查询的命中率,减少磁盘IO,以此来提升数据库性能...[水平分库] 2、水平分表 水平分表是在同一个数据库内,把一张大数据量的表按一定规则,切分成多个结构完全相同表,而每个表只存原表的一部分数据。...[水平分表] 水平分表尽管拆分了表,但子表都还是在同一个数据库实例中,只是解决了单一表数据量过大的问题,并没有将拆分后的表分散到不同的机器上,还在竞争同一个物理机的CPU、内存、网络IO等。...扩容的难度和维护量较大,(拆分成几千张子表想想都恐怖)。 --- 一定规则是什么 我们上边提到过很多次 一定规则 ,这个规则其实是一种路由算法,就是决定一条数据具体应该存在哪个数据库的哪张表里。...常见的有 取模算法 和 范围限定算法 1、取模算法 按字段取模(对hash结果取余数 (hash() mod N),N为数据库实例数或子表数量)是最为常见的一种切分方式。

    47520

    快速学习-Mycat的配置

    7.4 childTable 标签 childTable 标签用于定义 E-R 分片的子表。通过标签上的属性与父表进行关联。...childTable 标签的相关属性: 7.4.1 name 属性 定义子表的表名。 7.4.2 joinKey 属性 插入子表的时候会使用这个列的值查找父表存储的数据节点。...程序首先获取 joinkey 的值,再通过 parentKey 属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上。从而确定子表存储的位置。...例如上面的例子中,我定义了一个用户,用户名为 test、密码也为 test,可访问的 schema 也只有 TESTDB 一个。...连接表规则和具体路由算法。当然,多个表规则可以连接到同一个路由算法上。table 标签内使用。让逻辑表使用这个规则进行分片。

    98650

    杭州某大厂:MySQL 连环问

    把以前存在一个数据库实例里的数据拆分成多个数据库实例,部署在不同的服务器中,这是分库。 把以前存在一张表里面的数据拆分成多张表,这是分表。...比如以前的表就存储一个关联 ID,但是业务时常要求返回对应的 Name 或者其他字段。这时候就可以把这些字段冗余到当前表中,来去除需要关联的操作。 那你们怎么分表的?...像上面的例子:用户名是很常见的搜索结果,性别和年龄占用的空间又不大,而地址和个人简介占用的空间相对而言就较大,我们都知道一个数据页的空间是有限的,把一些无用的数据拆分出去,一页就能存放更多行的数据。...排序、count、分页问题 如果一个用户的数据被拆分到多个表中,那查询结果分页就不像以前单张表那样直接就能查出来了,像 count 操作也是一样的。...这跟 HashMap 选哪个桶是一样的原理。 优点就是数据分布均匀。 缺点就是增加子表的时候麻烦,想想 HashMap的扩容,是不是得搬迁数据?这个分表也是一样的,我们可都知道,数据迁移一件麻烦事!

    60720

    【MySQL】表的增删查改(进阶)

    此处起到约束作用的班级,就叫做“父表”(parent),被约束的这个表,就叫做子表(child)。 外键约束,是父表对 子表做了约束,但与此同时。子表也在反过来约束了父表。...id为1,被子表引用了,因此被约束,无法删除id为1的数据。 id为2,没有被引用,可以删除。 这是为什么呢?每次给子表插入数据,势必要在父表中查询一下这个id是否存在。...: student(studentId,name); course(courseId,name); student_course(studentId,courseId); 新增 把查询的结果,插入到另一个表中...联合查询(多表查询) 实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积: 笛卡尔积是通过排列组合来的。 笛卡尔积得到一个更大的表。...先笛卡尔积 加上连接条件 加上聚合查询,把同一个同学的行合并到同一个组中同时计算总分 任务3:查询所有同学的成绩以及同学的个人信息 分析:期望查询结果中,有个人信息(student表),

    3.1K20

    面试总被问分库分表怎么办?你可以这样怼他

    二、如何分库分表 分库分表就是要将大量数据分散到多个数据库中,使每个数据库中数据量小响应速度快,以此来提升数 据库整体性能。...水平切分将一张大数据量的表,切分成多个表结构相同,而每个表只占原表一部分数据,然后按不同的条件分散到多个数据库中。...库内分表 库内分表虽然将表拆分,但子表都还是在同一个数据库实例中,只是解决了单一表数据量过大的问题,并没有将拆分后的表分布到不同机器的库上,还在竞争同一个物理机的CPU、内存、网络IO。...[在这里插入图片描述] 分库分表 分库分表则是将切分出来的子表,分散到不同的数据库中,从而使得单个表的数据量变小,达到分布式的效果。...分库分表以后会出现一个问题,一张表会出现在多个数据库里,到底该往哪个库的表里存呢?

    49730

    FineReport学习(二)——各种报表的制作

    目录 1、行式报表:订单表 2、分组报表:销量表 3、交叉报表:销量表 4、自由报表:订单表 5、简单多元报表 6、主子报表   1) 决策报表式主子表   2)嵌入式主子表 1、行式报表...再次进行点单号的父子格设置,它的父子格仍然是“订单ID” 保存后,再次预览效果 按照如下操作,即可 保存后,效果预览 5、简单多元报表 多数据源,就是在同一张报表当中,显示的数据来自于多个不同的表或不同的库...效果预览 接下来设置右侧的“销售总额”,注意该字段来自第二张表。还是老生常谈的一句话,这个字段是按照每一行的销售员进行求和的,因此需要设置父子格。...一般包含多个数据集,通常由自由格式部分及列表格式部分组成,且为一对多,父与子的关系,如下图上方为订单信息,下方这个订单的明细 这样的主子报表制作比较方便,且可以用于填报,因此称之为决策报表式主子报表...该表是在自由报表基础上,进行改动后,完成的。因此我们不再讲述怎么做自由报表,将上述的自由报表复制一份,命名为“主子报表”。 再导入“订单明细表” 设置表的样式。

    1.8K11

    MyCat - 使用篇(1)

    应用访问MyCat,根据之前所述,应用感知到后台只是一个(或者多个,和访问MySQL实例一样)数据库(假设只有一个数据库,这个库叫SF,里面有运单相关表,快递员相关表和客户相关表);这里MyCat的数据库就是逻辑库...根据这一思路,提出了基于E-R关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据Join不会跨库操作。...对于子表的sql请求,都是通过joinKey对应到父表对应字段后,按照之前分片表的规则进行处理。...orders_cargo表是子母件表,一个order可能有多个子母件,所以,最好把orders_cargo作为orders的子表。...这种情况下,orders与orders_cargo按照对应键(就是子表按照哪个键与主表的哪个键对应进行分片。比如orders_cargo就是order_id与orders的id对应。

    72720

    分库分表,读写分离后,数据库中间件扮演了一个怎样的角色?

    join查询,然后将结果合并 count()操作 业务代码或者数据库中间件对每个表进行count(*)操作,然后将结果相加。...或者新建一张表,假如表名为“记录数表”,包含table_name和row_count两个字段,每次插入或删除子表数据成功后,都更新“记录数表” order by操作 水平分表后,数据分散到多个字表中,排序操作无法再数据库中完成...目前国内用的最多的中间件就是sharding-jdbc,mycat,别的用的很少,不再介绍 而数据库中间件针对数据源管理,目前主要有两种思路 客户端模式,在每个应用程序模块中配置管理自己需要的一个(或者多个...绿色的部分为mycat的逻辑节点,蓝色的部分为物理节点(即数据库的部署地址) schema:逻辑库 通常对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道 数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库...逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成 datanode:分片节点 数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节点

    52040
    领券