00:01
好,那接下来呢,我们就使用spring boot整合一下my plus来完成一个c rud小实验,那我们的整个数据访问章节MYS数据库开发的这个场景你就可以结束了。那马贝斯plus是什么?大家可能以前听过,它是我们马贝斯的一个增强工具,比如说它增强了我们这个马贝斯的整体功能,简化了我们开发,比如以前我们想使用原生的贝斯开发我们的一些简单的增删改查方法,我们可能呢要写注解,或者配到我们这个插面文件中,整个呢都太麻烦,那我们有了这个马杯斯plus,像这些基本的增产改查方法,它都已经给我们写好了,直接使用就行了,所以整个能提升我们的生产效率,那我们整个开发的这个使用,如果大家学会的话,那就没问题,不会的同学可以参照那个马杯斯plus的这个官网,在这一块指南里边,我们就从这儿来开始学就行了,而且MY杯plus呢,开发之前我们推荐大家安装一个MY杯斯plus官方的这个马杯斯X快速开发插件,这个开发插件呢有非常多的功能。
01:01
比如第一个插的跳转,我们可以从一个map直接跳到它映射的这个插里边,我们之前都体验过,老师在开发的时候呢,在这个map,比如我们这个account map,这个map呢,我们点一个这个小鸟就直接来到它映射的这个插文件里边啊,然后呢,包括它这个方法就能映射回我们的这个map类里边,我们开发起来来回跳转呢,也非常方便,然后呢,另外它还有其他的功能,比如它可以连线我们的这个数据库,直接帮我们来逆向生成一些代码啊,也非常方便,包括呢也有一些语法提示等等等等,那我们就大家自己来安装一下这个插件就行,来到这儿来安装一下,因为老师呢已经安过了,自己在这个插件这个市场里边安一下,那接下来我们就来进行一个开发,那整个开发呢,我们最终想要做成的效果应该是这样子的,还是参照我们这个后台管理系统页面这呢有一个basic table基础表格里边有一个高级表格,我希望这个表格里边的所有数据是通过数据库查出来的。
02:01
而且呢也具有分页功能,还有一些模糊查询等等,那么就来完成一下它,那这个怎么做呢?我们就来整个整合马贝斯plus来做一下,来参照它的这个快速开始入门来,首先要整合我们要做的这个第一步,我们先来准备一些环境,那们先来给我们数据库里边创建一张测试表,然后呢,这个表里边我们再来插一些数据,就把这个语法复制过来,来到我们的这个数据库,那在这来创建上一张表,这个create table user,好,我们创建一张user表来看运行,然后呢,再给这个表里边添加一些数据,添加一些测试数据。我们拿这个测试数据,我们来做一个增产改查功能,来直接运行好,这个运行成功,我们来F5刷新一下,那这个表呢就有了,然后我们来看一下它数据也都在,而且呢,我们发现这个ID呢不是自增的,我们也可以把这个表的ID改成自增的,方便我们接下来测试好。
03:00
那现在我们的这个基础东西我们就准备好了,那接下来我们就来整合马贝斯plus,那想要整合之前呢,我们先来打通我们的整个页面,这一块的页面呢,因为我们现在用的是高级表格,先来启动我们的这个项目,来看应该是跳转到哪个页面。来访问我们local host8080 local host8080来看一下高级表格的页面叫动态table页,这个动态table页呢,其实在我们以前应该是timeless模板里边是有的,这呢有一个动态table页,这个动态table页呢,是这个请求跳转过来的动态table页,在这是我们这个dynamic table这个请求看一下来访问LOCAL8080刷新。登录进来123456,好,我们现在这个动态太不一样,我们一点因为这一块呢,抛出了我们自定义的异常,所以这个我们来开发期间,我们把这个注调就来打通这一块,那么接下来呢,我们就希望能跳到这一页,我们就应该是从数据库里边,从数据库中查出,查出user表中的用户,查出user表中的用户进行展示就行了,好,我们现在来确认一下啊,确认一下我们的整个页面跳转先没问题,来到我们这个页。
04:26
好在我们的这个高级动态表样好没问题,然后这个表呢,下边还有好多表格,我们可以只留上一个,下面这个表格呢,给它删了这个表格所在的整个给它删了这个表格,我来CTRLF搜一下这个表格所在的这一块,这是一个header,直接找它的负层级这一块的div,然后呢,这还有一个大div,那整个这个大div呢,都是我们这个表格,你把这个一删就行,CTRLF9保证我们页面呢,现在只有一个表格刷新。
05:04
重新登录123456。啊,这个表格里边,好,现在就这一个表格,我们这个表格里边的数据呢,那再从数据库里边查,这个环境呢,就准备好了,我们创建了一个,在我们数据库里边创建了一个user表,然后呢,我们整个页面的跳转也没有任何问题,那接下来我们就来整个开发,那开发呢,我们先来整合我们这个马贝斯plus,我们先要使用它来进行开发,参照官方文档,我们的这个快速开始里边这些都准备好了,我们来创建出一个项目,这个项目呢,只要引入我们马贝斯plus boot starter就行,把它复制过来。所以来到我们的这个po文件里边,来引入一下马贝斯plus的start,引进来以后呢,我们来正好来分析一下里边的这个依赖。来看一下这个依赖my beat plus的这个starter来找my base plus boot starter,他引了my base plus的核心包,也引了我们开发数据库场景的JD bc start,所以呢,我们这个j d bc start我们就可以不用引了。
06:13
其实呢,我们使用马base斯进行原生开发的时候,马base斯spring boot的这个start他们也帮我们来引,引了这个JDBC场景了,所以我们也不用引了,然后再来接下来看马杯斯plus还引了什么,马杯斯plus呢,说引了数据库场景开发,还引了我们这个马杯斯plus的扩展,马杯斯plus的核心,马杯斯plus核心里边呢,引了马贝蒂斯的核心包,还引了呢马杯斯跟spring的整合包,说明马贝斯跟马贝斯跟spring的整合的这一块的模块也都赢了,所以我们马贝蒂斯的这个场景我们也不需要了,所以我们只要引入了买杯斯plus这一个依赖就行们买杯斯的start不用引好,所以呢,我们整合买杯斯plus第一步先引入它的这个依赖在这儿,然后这个依赖引进来呢,按照我们正常开发,我就应该分析一下这个引进来的这个场景,它帮我们自动配了是吗?那可来到这一块来分析一下它的自动配置。
07:13
这个自动配置呢,对应的是马贝斯plus starter,好点进来看一下,在这个starter里边,Start里边呢,我们都知道自动配置是从spring factor里边获取enable auto compation1启动要加载的类,其中呢就有一个马base斯plus auto compation,相当于呢,就会有一个这个叫马杯斯plus auto compation所说呢,我们项目一启动,我们的马杯斯plus的这个自动配置就会生效,分析一下它的自动配置,自动配置了哪些东西,第一个是马威斯plus的auto compation,这是自动配置类,这个自动配置类呢,而且它肯定会给容器中at being放好多东西,另外呢,这些东西的所有的属性一定都是从这个properties中来,这个properties呢,是什么叫马杯plus properties,就是这个说明呢,我们这个配置文件里边,所有相关的这个属性都是绑定于这个类的,叫马杯plus properties。
08:13
然后呢,把这个复制过来,这个呢配置类,然后呢,这是它的这个配置项绑定,然后呢,它绑定的是配置文件的哪一块,那可以看一下啊,它绑定的是我们这一块叫马贝plus这个钱缀,相当于呢,以后我们对于马贝蒂斯plus的配置都是在这个下边叉叉叉就是对,就是对马贝斯plus的定制就行了,好,我们分析了它,然后再来看一下我们这个auto到底配了哪些,来一直往下看,按照B首先给容器中放了一个circle session factory circle session factory大家都知道这是马贝斯的核心组件,这个呢已经自动配置好了,我们不用管了,怎么自动配置好呢?我们明显能看到在这个SQ session factor里边,我们这个工厂里边设置数据源,数据源呢是拿到容器中的,因为我们说过and being标注的。
09:13
方法如果呢,参数是一个对象,这个参数呢,就会从容器中自动确定这个组件,我们容器中呢,正好是一个direct数据源,咱们当前呢操作的相当也是direct数据源,没问题,配好了,然后呢,他还在这判断我们有没有配pro里边的convi location convi location什么什么呢,相当于我们有没有配马贝利斯的全局配置文件位置,如果没有的话呢,就不用管了,然后呢,再来接下来它下边的好多配置都是来绑定于我们的这个properties里边的,另外呢,在这块还设置了一个叫configuration properties,所以我们关于配置属性的配置都在这个里边,所以呢,这个里边呢,相当于我们就能配置我们很多的这个功能,包括我们这个能看到还有一个comp这一块,也集合了我们马贝斯好多的这个功能属性,而在这个功能属性里边呢,我们之前还看到这么一个事,我们在这看con location的时候,我们会发现就是呢我们马贝斯plus的这个属性配置。
10:13
那配置里边呢,其实有一些默认池,就有一个叫map locations,所以哪些都自动配好了呢?So session配好了,然后map location自动配置好的,它是有默认值,这个默认值是什么呢?我们来正好分析到这,给大家看一下,叫class帕星,Class pass星就是你不管是哪个包,在它的类路径下,这个map文件夹下任意层路径下的所有插面,我们这个任意包,任意包的类路径下的所有map文件夹下,文件夹下任意路径下的所有所有咱们这个插麦都是我们的SQ映射文件,映射文件,所以呢,我们这个mys plus相当于把我们这个SQ映射文件的路径也指定好了,它呢是指定到我们类路径下。
11:13
的member下,所以我们以前想配的这些SQ映射文件让它生效,你只需要按照人家约定的规则给这一放就行了,但是这个规则呢,你自己也可以改,那我就把这个删了,我现在按照约定的规则就放到这儿,所以呢,建议我们以后的文件都是放在这个路径下,建议以后咱们这个circleq映射文件放在咱们这个map路径下,Map下类路径下,Map下我们已经放好了,我们再来看我们这个自动配置配了哪些,大家会看到所有的属性呢,都可以从properties里面获取到非常多的东西。然后呢,我们来看还有an being的容器中也放了circle session ten,所以呢,容器中也有这个circle session termate,容器中也自动配置,自动配置配置好了circle session table,然后呢,再来加上。
12:09
再来加上我们来往下来看下边还有没有车,诶这还有一个配置类,配置类呢,它还导了一个这个来导进来,点进来看一下这个的作用是什么,它是注注册并应定义信息,然后给容器中注册,注册哪些呢?就是注册以member at member标注的这些,所以呢,相当于你按member标注的也会被自动扫描标注的接口。的接口也会被自动扫描,所以就是一句话,人家把所有东西都配置好了,而且有默认规则,我们什么都不用管了,直接开发就行。所以呢,我们现在就来测试我们该如何直接开发这个功能,那我们现在想要开发呢?那我们就现在已经数据表准备好了,你们再来准备一个扎兵,准备一个map,专门来操作这些东西。
13:00
好,我们来继续来参照官方文档,接下来呢,配置数据源,数据源的配置我们也已经配置好了,我们在这呢配置好了,而且马贝斯plus的这个底层我能看到my plus的auto configuration,它的底层circle session factory,这个circle session工厂,这个工厂里边要用的数据源是我们容器中的数据源,所以呢,我们相当于底层也用到了我们的这个数据源,底层是我们容器中默认的数据源,那按照我们现在的这个开发场景,那就是de direct数据源,那因为我们给容器中我们放的这个数据源是direct数据源类型的,我们direct还做好了配置,所以呢,现在用的是这个数据源,那在另外我们来看,所以我所以我们这个数据源我们也都配置好了,我们以前都配好了member sc,我们前也都写好了,没有任何问题,在这呢,都准备好了,所以我们也建议直接写member sc。
14:00
因为每一个map接口在这标注太麻烦了,所以呢,建议直接map sky来批量扫描,扫描就行,我们就不用标at map这个注解了,那这一块呢,写好了以后呢,再来接下来那参照官方文档准备一个user类,这个user类里边的所有属性就是对应我们数据库里边的所有属性,那么这个user类来看一下user类诶在这有,但这个user类呢,它现在我们这是我们之前的,那我们把这个数据库里边拿过来,然后另外之前这两个属性呢,最好别注掉,因为我记得我们之前在这儿还判断过登录,登录要用它的用户名密密码,这个一注掉的话,我们方法还得改,太麻烦,我们把这两个属性呢保留一下这个以下是数据库的字段,好,我们现在都准备好了,那数据库呢,在这儿也都有了,我们这五行数据,而且呢是自增组件,没问题,啥都准备好,那接下来呢,我们再来准备一个map,要操。
15:00
做我们这个表,我们以前在这准备map,我们现在来先来写,准备一个map,我们就叫user map,然后操作user表,就要user map,而且呢必须是一个接口,就interface,那我们以前要准备好这个map,我们要自己写上方法,写上select这语句做增删改查太麻烦,有了my base plus,人家呢会给我们有一个鸡类map,叫base map,这个base map呢,它有一个泛型,你想要操作哪个类型的数据,因为我们现在呢操作user的类型,像数据库里边呢,有一张表,它的数据能封装成user类型,我就写一个user,写个它的好处是什么?点进base map,我们发现base map里边呢,已经声明了一些方法,CTRL f12这里边呢有删除方法,有插入方法,有查询的一大堆,然后呢还有我们的更新,但人家各种情况的增删改查方法,比如有查询单个的啊,还有查询记录,记录数数的,还有我们整个查询一个list的,人家呢,都有这种各种查询情况,所以相当于人家的这个基础版本。
16:00
增删改查都有了,所以我们就无需编写买本传文件,我们的这个增删改查功能就直接会有,除非我们的这个增删改查特别的麻烦,它的这个增删改查已经不能用了,所以我们可以给它再来映射一个叉文件,所以我们现在呢,有了它以后,我们就继承base map,所我们在这这来说一下我的优点,有了my base plus的优点,我们明显能看觉到优点就是呢,我们只需要只需要只需要我们的只需要呃,我们的这个member,我们的member继承继承base member就可就可以拥有继承base member就可以拥有咱们这个c rud能力,我们呢就不用自己再来编写那些增产改善方法了,那我们来测试一下就行了,那这个member呢,已经准备好了,而且批量扫描进来,直接来到测试类里边。
17:03
好,我们来专门来写一个方法,But,就叫test user member,然后呢,At test来写一下,然后我们来测试一下user member user member呢在这里边已经有了,哎,User member,好,我们准备好叫user member,然后呢,At一个owa自动注入,这一块呢,其实有波浪线没注入过来,不用管,然后呢,我们接下来直接调用它的方法select,把ID相当按照ID查询一个东西,那么就来查询一号用户,那用户查完我们可以s out输出一下,或者使用log.info的用户信息,那直接把这个用户信息呢打印到这usera来测试一下我们这个查询能不能使用走。
18:15
好,我们来稍等一下,我们来看一下效果。这一块呢,也打印了my base plus的这个banner,好,我们现在呢,在这启动报错,报错呢说不知道,这一列叫username,在我们这一列不存在,所以呢相当于我们查了,只是呢,我们username这一项我们在数据库里边没有查出来,所以呢我们没有封装过来,所以人家在这一块呢,有一个唯一的这个唯一的这个要求就是那么这个里边存在的所有属性,所有属性都应该都应该在数据库里边有在数据库中,这样的话是不是太麻烦了,难道我们就不能写两个临时的属性吗?所以呢,我们就可以使用my base plus的里边的一些注解,比如有一个叫table field,它对对应呢,说我这个属性呢,是表里的属性,表里的哪些属性,其中就有一个属性叫exist等于false,代表呢,我们这个属性在表中不存在,诶我们来批注一下就行,这样一批注以后呢,我们再来启动测试运行。
19:20
所以有了my plus,我们方便的使用好几个简单的注解,也能完成很多额外的功能。表中不存在他发送的SQL语句,自然就不会查询这两个属性,稍等一下。好,现在启动起来,我们来查询成功用户,用户信息,用户名密码没有找到,然后呢,接下来这些信息都封装正确没有问题,那这次我们马贝斯plus就整合进来了,那么下一节课呢,就把完整的整个这个c rud来给大家写出来。
我来说两句