视频链接:https://www.bilibili.com/video/BV12R4y157Be/?spm_id_from=333.337.search-card.all.click&vd_source=9545770e4a2968c05878ffac8589ec6c
视频选集:P1— P28


任何能使用MyBatis进行CRUD,并且支持标准SQL的数据库,具体支持情况如下,如果不在下列表查看分页部分教程PR您的支持。

MyBatis-Plus框架结构:

左边:先扫描实体,通过反射抽取,把实体类中的属性抽取出来;再去分析要操作的表,要操作的实体类中的属性,也就是表中的字段是什么;最终再去生成相对于的SQL语句,把语句注入到MyBatis容器中




先检查Maven环境:

创建新的工程:




删除不需要的:

添加依赖:


下载lombok插件:



创建实体类:
①用注解得到各个方法

②由于上面要写的太多,用一个就可以表达


在启动类中,在springboot中使用MyBatis时,一定要设置当前mapper接口所在的包以及映射文件所在的包

创建测试类:

问题:userMapper报错
解决方案:添加注解【将当前mapper接口标识为持久层组件】

其中SQL语句是MyBatis-Plus中编写的
效果展示:

在application.xml中:

将上面代码重新运行:

MyBatis-Plus操作的表以及当前表中的字段,由实体类以及实体类中的属性决定





















展示:

通过id删除用户信息


根据map集合中所设置的条件删除用户信息


修改用户信息





根据map集合中的条件查询用户信息

查询所有数据

在MyBatis-Plus中设置映射文件的路径,需要通过mapper-locations来进行配置,而这个配置有一个默认位置,在类路径下的mapper下面的任意目录下的所有的.xml

如果不配置路径:


定义接口中的方法:

在映射文件中实现:

测试:

结果:


MyBatis-Plus中有一个接口IService和其实现类Servicelmpl,封装了常见的业务层逻辑详情查看源码IService和Servicelmpl
创建接口:

接口实现类:


测试类:

结果展示:

mapper中只能添加单条数据,不能批量添加,批量添加只能在Service中有【Service其实也是单个,只是循环添加了】

展示:

当我们将数据库中表的名字由user改为t_user后,再次运行程序将会出错,解决方案:

还可以设置全局配置:

当表中的主键id被改为uid后,很多代码中的就需要相应的进行修改
解决方法:【此时实体类中定义的变量uid和表中的名字uid是一样的才可行】

@TableId注解查看源代码:



解决方案:

如果只有一个值,可以简略为:


将数据库的表设置为自增:

效果:



背景:需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。
数据库的扩展方式主要包括:业务分库、主从复制,数据库分表。
数据库分表
将不同业务数据分散存储到不同的数据库服务器,能够支撑百万甚至千万用户规模的业务,但如果业务继续发展,同一业务的单表数据也会达到单台数据库服务器的处理瓶颈。例如,淘宝的几亿用户数据,如果全部存放在一台数据库服务器的一张表中,肯定是无法满足性能要求的,此时就需要对单表数据进行拆分。
单表数据拆分有两种方式:垂直分表和水平分表。

垂直分表
垂直分表适合将表中某些不常用且占了大量空间的列拆分出去。
例如,前面示意图中的nickname和description字段,假设我们是一个婚恋网站,用户在筛选其他用户的时候,主要是用age和sex两个字段进行查询,而nickname和description两个字段主要用于展示,一般不会在业务查询中用到。description本身又比较长,因此我们可以将这两个字段独立到另外一张表中,这样在查询 age和sex时,就能带来一定的性能提升。
水平分表
水平分表适合表行数特别大的表,有的公司要求单表行数超过5000万就必须进行分表,这个数字可以作为参考,但并不是绝对标准,关键还是要看表的访问性能。对于一些比较复杂的表,可能超过1000万就要分表了;而对于一些简单的表,即使存储数据超过1亿行,也可以不分表。
但不管怎样,当看到表的数据量达到千万级别时,作为架构师就要警觉起来,因为这很可能是架构的性能瓶颈或者隐患。


雪花算法:由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

当字段名和属性名不一致的时候


删除测试:

展现:

再次重新查找数据库:
