00:00
那我们所要讲的这个自动填充功能呢,依赖于我们还是table field的这个注解啊,它是一个老朋友了,好,它里面还有一个属性叫做feel。啊,Fail呢,它就是填充的意思嘛,然后呢,它有若干个值,其中呢,有两个大家一看就懂的值,叫做insert和update,是不是啊,也就是说这两个值呢,帮助我们。来为当前的这个数据属性定义,定义什么样的一个特性呢?这是增加的时候需要自动填充的,这是修改的时候需要自动填充的,好那么接下来呢,我们就为我们的数据属性来添加这样的两个注解啊,我直接复制过来。那么我们找到我们的user,好在我们的quick time这个地方,我们添加这样的一个insert注解,对吧?好在我们的update time这个地方,我们添加我们的update注解啊,好,那所以当我们增加记录的时候,这就会被自动填充,当我们修改记录的时候,这就会被自动填充,那么如果你说我增加的时候,它也想被自动填充好,那么你就写什么呢?Insert and update,这样的时候呢?啊,这样的话呢,我们这条记录和这条记录啊。
01:23
呃。我们的这个属性和这个属性在数据增加的时候就会被自动的进行填充,那么我们这个属性在数据修改的时候就会被自动的填充好,填什么对不对?你告诉那个应用程序说你给我添增加的时候,然后告诉应用程序说你给我改增加的时候,但是你填什么改什么,你并没有告诉应用程序,而应用程序它其实也并没有那么智能啊,必须呢,你得定义出来,定义什么呢?就是在自动填充的时候,我增加的状态下,我要为这个字段我添什么值,对吧?我修改的时候,我要为这个字段我添什么纸,而这个过程呢,是需要我们写。
02:09
具体的业务逻辑的,那这个业务逻辑我们写在哪呢?写到一个叫做原对象处理器接口的这样的一个类当中,我们来看一下,这是有依据的。在我们的买的官方文档当中啊,里面呢,有一个叫做扩展的功能,然后扩展这个里面呢,有一个自动填充,看见了吧,我们点进去啊,点进去之后呢。好点进去之后呢,我们来看它这里面呢,就介绍了自动填充功能啊,两个步骤,一个步骤呢是。注解这个字段的填充,你看把这个填上了,跟刚才咱们写的一样,对不对?还有一个步骤呢,就是实现这个接口,哪个接口呢?My object handler,把这个接口实现一下,好怎么去实现呢?
03:03
这样的一个方式,用它你自定义一个实现类啊,去implements,刚才那个matter object handler,然后呢。这个接口里面呢,有两个。抽象方法,一个抽象方法呢叫insert file,另一个抽象方法呢叫update file,那我们呢,就需要把这两个抽象方法呢,给它实现一下就可以了,但是他这个里面写的比较啰嗦,比较复杂哈,我们呢先自己给他实现一下,那怎么实现呢?我们就新建一个叫做handler的包,然后呢,里面创建一个叫做Meta object handler的这么一个。实现类叫做my my object handle,好吧,好,我们按照他这个去给他做一个实现,所以打开我们的。Idea,然后呢,我们在这个地方。New一个class吧,这class的名字呢,就叫做my object handler,当然了,你可以把它放在哪啊,放在这个名字叫做handler的接口当中,呃,对,包当中。
04:08
好,然后接下来呢,我们会说啊,我们在这面呢,就创建了一个叫做handleler的包,然后在handleler的包里面呢,就创建了一个叫做买Meta object的handleler的这么一个类,然后这个类呢,根据刚才我们看到的文档当中的那这个内容,我们让它实现Meta object handler这个接口,好然后接下来呢,Out加enter,我们把它实现出来,这个里面呢有两个抽象方法,好,我把这两个抽象方法呢给它定义出来,然后接下来呢,它呢是一个接口的实现,那我们希望应用程序运行的时候啊,这个类呢,是被自动的啊加载到我们的spring容器的上下文当中的,所以呢,我们给它添加一个component注解,这样的话呢,这个类的对象呢,就会被spring自动的管理,我们就不用去主动的去拗它了,那同时呢,应用程序一启动,Spring呢,就。
05:02
创建它初始化它加载它对不对,然后接下来呢,我们应用程序运行的时候啊,运行的时候,比如说你做增加的时候,它呢。啊,会这个检查这个user这个类里面有没有,呃,这个相对应的一个列去添加了样的一个啊feel。注解,对吧,如果有的话,那么它就会自动的来到这个买matter object handler这个里面的相关的方法当中去做自动的一个调用好,那这样的话呢,在这个里面我们就可以写我们具体的填充业务逻辑了,所以呢,实现填充业务逻辑啊。实现。填充。业务逻辑啊,具体的填充业务逻辑怎么写呢?有一个叫this this里面有一个方法呢,叫做呃,Strict啊,我们用这个。Strict in third film。
06:01
叫做呃,在insert的过程当中呢,我们做自动填充啊,然后接下来呢,它接收三个参数啊,第一个参数呢,是这个matter object matter object呢,实际上就是这个原数据对象,这个原数据对象里面存什么呢?其实就存你当前的这个列里面的一些必要的一些原数据信息,比如说这个列名叫什么呀,这个列类型是什么呀,都会在这个里面存着啊,然后呢,我们在这个地方呢,写什么呢,写可。Rate。Time,那很显然这是啥?这是属性名,谁的属性名user,这个里面我想针对create time做自动填充,那么你就要把它写上,你填充什么?你填充什么,我填充的是,呃这个。这样的一个值我写在哪儿呢?写在后面,当然了,这里面一共四个参数啊啊,那第三个参数是什么呢?就是你填充的这个数据的类型是什么啊,因为他呢,要严格的去匹配这个数据类型的,所以我要填充的这个great time的数据类型呢,是是这个类型的好。
07:13
那我就把它写到这叫做点class,好,那最后就是你填充什么,填充什么呢?我想填充当前时间local data time点那好这样的话呢,我们这段代码呢,就写好了,我们再来看一下。这个方法呢,有四个参数啊,第一个参数呢,是原数据对象,这个里面呢,就包含你当前的这个列里面的一些原数据信息,然后接下来呢,第二个就是你当前的这个呃填充,你要针对哪个字段做填充,我要针对当前user里面的quick time这个字段做填充好这个字段呢是什么类型的,是local data time类型的,你要填充什么具体的内容,我要填充的是当前时间。好吧,所以这块呢,就实现了我们的一个啊这个填充,那么针对这个我们的。
08:04
更新的这样的一个字段的话,我也想在insert的时候呢,去做一个相应的填充,那么我们呢,就可以在这个地方。比如说给他复制一下,然后这块呢,我就写。Update time。好,那我的填充的数据类型也是它,我填充的时间呢,也是它也是当前时间,所以呢在做insert,什么叫insert费,就是在这条数据被插入到数据库之前,那我们呢,先从业务层,从业务的角度,先把这个字段当中的这两个字段在这个地方维护一下,所以呢,每一次我们执行这个insert方法的时候,它呢就会自动的来到这个里面,先调用这两句话,为我们当前的user对象先填充这个值,然后再做数据库的插入啊同时update费也是一样的,那每一次我们对这个数据进行update的时候,比如说这面。
09:10
每一次我们对数据进行update的时候,那么他首先会来到这个接口的实现方法当中,先调用这个方法为我们的update time,再更新一下当前的时间,然后再上我们这个地方来执行最终的这个update,啊,也就是说在update语句当中,他要先去做什么呀?先去做这件事情好,然后呢,接下来我们为了能够非常清晰的看到这个方法被执行,我们可以在这个地方打日志,打日志怎么打呢?沙拉风,这个呢,是long box里面的一个扩展功能啊,然后他给我们提供了一个日志输出的一个扩展,好把它引进来,引进来之后我们就可以在我们当前的这个方法当中去写log.info了啊,注意这个log是必须。
10:06
依赖于这个注解的,如果这个注解你不写,这个log对象就没有啊,好,把这个注解写上,Log对象就有了log.in for,比如说啊,填充。行吧。好,然后接下来呢,这面也是一样的。log.in这面呢是修改。行吧,啊,或者是说我更明确的写一下吧,这块是in。字。Stone。填充对吧,好,这块实际上应该写update自动。填充行吧,嗯,所以呢,这样的话呢,我们就完成了这个接口的一个实现,好我们再来简单的看一下,我们做了两个步骤,其实啊,第一个步骤呢,是在这个位置为我们的列添加了一个注解,这个注解的属性叫做feel啊,然后添加insert或者是其他的一些必要的这样的一个值。第二个步骤呢,我们自己定义了一个实现类,这个实现类呢,它呃,实现了我们的matter object handler这个接口,这个接口就是专门自动填充用的,好这里面呢,有两个抽象方法,我们把它实现出来,这是insert的时候填充,这是update的时候填充好,那这样的话呢,我们就可以进行一个测试了,那么测试的时候呢,我们来看啊。
11:32
还是?看我们刚才的这个测试的步骤,在ins inside insert这个地方200吧。好,然后呢,我们右键。在下面看啊,那下面这个地方呢,我们的这个音色略语句。
12:02
看看是不是有了,可time和update time呀,我们有没有在我们的业务层主动的去写这两句话,并没有,但是呢,这个insert语句里面却包含了这两个字段,为什么?因为我们做了自动填充,好自动填充执行了吗?执行了,大家看这块儿是不是insert自动填充呀,好,那刚才的我们那个自动填充的这个。方法啊。就说明他已经被正确的执行了,执行完了之后呢,我们再来看我们的数据库这一面。刷新一下。看看观海200,诶,它的free time和update time是不是自动的被。生成了啊这两个字段,那接下来呢,我们来做一个更新,我们把这个ID呢,给它复制一下,然后接下来呢,我们来到我们的代码当中,找到我们之前的。Update。
13:02
这has update,我们把这个ID呢替换过来。好,然后接下来呢,依然是我们没有去主动的更新这个update time,好,那接下来呢,我们来运行一下,把它改一下吧,改成嗯,97。好,然后呢,右键运行。好,那么我们看这个结果呢,跟刚才呢。啊,一致,所以呢,在更新的过程当中,虽然我们没有主动的去维护update time,但是呢,SQL语句当中已经生成了啊,说明呢,在业务层当中,我们已经对这个update time进行了一个成功的一个填充,那么在哪填充的呢?在这个位置叫update自动填充,这个日志呢也被打印出来了,那接下来呢,我们来看一下数据库刷新一下,那么我们来看啊这个。
14:01
字段的值是不是相比较于前面的这个字段的值已经有了一个更新了,因为它是更靠后的一个时间,对不对,好,那到这为止呢,我们就啊了解了什么叫做。My bet plus的自动填充以及如何针对my be plus做自动填充。
我来说两句