00:00
为什么我们需要自定义呢?哎,我们来说这个employees status,哎,这么来做枚举,哎,有点丑啊,我们说枚举呢,我们一般使用情况是怎么使用呢?来我们这个log log out remove,我们可能会有非常多的这个枚举状态,那每一个枚举呢,为了我们系统方便,我们都会给它自定义一个我们的这个状态码,比如呢,我们这个login啊,它呢是100,如果登录了状态码就是100 log out登出了,那就是200REMOVE了,那我们就是300,每一个状态码呢,我们可能还有一些提示信息,哎,比如呢,Login,它就是用户登录。而log out。它就是用户登出。啊登出,然后呢,Remove,这就是咱们这个用户。不存在,所以说呢,我们经常系统都是这么来用的,哎,你一个枚举状态,我们啊,我们这个状态码呢,可以返回给前端,前端拿到这个状态码可以做一些处理,而不是拿我们那些零一索引,哎这样太丑了,好那怎么办呢?如果是这样的话,哎,我们这个枚举呢,我们可以整一个构造器,可以status。
01:17
Status,那么呢,这个构造器呢,就是我们要用两个参数的,因为每一个枚举相当于都是employee status的一个对象,哎,两个参数的一个是配它的code枚举的这个状态码和string message提示信息,好这样一做以后呢,他们就不会有什么报错,我们来看一下啊,那就让这个库赋值。好,我们来让库复制好。This。不存在我们这一块逗号有问题吧,好逗号有问题啊,好我们来看啊,我们定义上两个属性,Private。
02:00
Private,哎,一个是咱们这个code保存我们当前枚举对象的状态码跟当前枚举状对象的message,哎,枚举对象的创建啊,是相当于是掉了这个类的两个,嗯,带两个参数的构造器,哎,这其实就是枚举的原理嘛,好,This加code等于咱们当前传过来的code this.message等于我们当前传过来的message,所以说呢,我们枚一局一般是这么来用,我们希望数据库里边,你如果保存信息,你可以保存这个,而我们希望呢,保存状态码都是100,两百三百,所以说呢,我们希望数据库,希望数据库保存的是是咱们这个100。200这些状态码,而不是默认的这些零一索引,或者呢,咱们这或者或者咱们这个枚举的咱们这个名,其实保存枚举名还行,就是这个零一索引,哎,太丑了啊好,那如果我们要这么来做的话,我们把这个get set方法写上啊,这两个属性呢,我们方便获取get set方法写上。
03:18
好,这样的话,我们就可以通过某一个枚举对象。好,这是枚举对象的索引跟名字,把我们给数据库保存的时候呢,我们拿到枚举的咱们这个状态码,我们自定义的状态码,状态码好。拿呢,我们就可以调用login方法的点get code,这就是拿它的状态码,以及呢我们来调用啊枚举的咱们这个提示。消息好,加log。Get。第二,Get message,好,我们来测试。
04:04
走,比如呢,这是枚举默认的索引跟名,而这是我们每一个枚举对象的字,我们自定义的状态码跟提示信息,我们希望给数据库来保存这个状态码,那这样的话呢,我们就需要啊,默认的这些枚举处理器已经都不行了,因为它不是保存索引就是保存名字,那么呢,我们想要保存这个,我们就得写一个自定义的类型处理器,好,我们就来写一个自定义类型处理器,又一个class,那就叫MY。咱们这个呢,那么这个是处理employee status的,咱们这个处理器。好,我们就把它放在咱们这个type,看到了八下行这个自定义类型处理器,你要成为类型处理器,首先第一步实现。实现咱们这个type handle接口,你实现这个接口或者呢?啊,或者人家这个接口下的有一个,或者人家这个type handler这个接口下。
05:15
啊,有一个这个父类叫best type handle,你也可以用它,嗯,Best type handle,所以说呢,我们可以实现它也可以继承或者继承继承。继承咱们这个best,好,我们呢,就来假设我们用来最初的这个实现,实现我们这个type。好,这块呢,有一个泛型,泛型的意思就是你这个类型处理器来处理哪个枚举的来处理employee status这个枚的。好加上好,那么呢,接下来就有一些方法,这些方法呢,我们就来看一下,第一个叫set,就是如何你看啊,这一块呢,会传入你这个employee status传过来的这个employees status对象来这块呢就是定义。
06:13
咱们参数如何保存进数据库中,定义当前数据如何保存到咱们这数据库中,好如何保存呢?也非常简单,我们就调用prepare statement的set,咱们这一块呢,我们给数据库里边就来set string,好set string prime index,这个index呢就是这个I,人家会传入这个I,而值呢,我们来看啊,这一块值我们是希望得到每举对象的咱们这个状态码,哎,这样的话呢,我们就会把枚举对象的状态码设置进去,哎,这一块呢,我们这个啊,我们这个状态码还定义的是应配置我这个数据库字段,我们当时定义的又是一个string,行了,我们就把它转成一个图string吧,好,我们把这个状态码呢,我们希望来。
07:10
做过来,接下来我们再来看,如果我们获取值的时候。获取值,获取值呢也非常简单,RS.get咱们这个啊,我们呢,获取到的是一个配get in哎,我们把这一列的值拿过来,来查这个枚举对象呢,我们会拿到枚举对象的这个code,这个code呢,我们最终需要返回一个枚举对象,相当于我们这一块需要根据哎,从数据库中拿到的枚举的咱们这个状态码返回。返回一个枚举对象,你看啊,我们要返回这个枚举对象,那怎么返回啊,我们就在这个employ status中,我们来定义一个按照状态码,嗯,按照咱们这个状态码,状态码给我们返回一个枚举对象的方法。
08:09
返回枚举对象的方法,我们来定一个public static啊,直接静态调用的返回一个sta,我们就叫get em status。Get呢EP status8code按照它的状态码来,你给我传入这个状态码。然后呢,我在这里边给你按照状态码返回,我们其实可以做一个Switch case,判断好Switch把你这个状态码传过来,如果你的状态码是100,那我们我们就给你返回,返回的应该是login啊,100呢是登录状态。好,如果呢,其他状态如果呢,你是200 200呢,我们刚才定义的是一个哎log out登出状态。
09:02
可以return一个好logout登出状态,好,如果呢,你是咱们这个300。如果呢,你是300,如果你是300呢,我们就来给你返回,返回的是删除状态。好,所以说呢,我们就可以这么来定义咱们这个方法,Switch could,好,还有我们这个默认值,对A啊,默认呢,我们就让它返回,默认呢,就是登出状态好行,现在呢,我们这个按照状态码返回枚举对象,我们这个就写好了,来到我们自定义的类型处理器里边,我们从数据库中会拿到这个状态码,哎,我们可以打印一下从数据库中获取的。好,咱们这个状态码,好这个呢就是could,然后呢,我们需要按照这个状态码转化成枚句对象,嗯,老1STATUSS调用它的这个转换方法给我们返回这个status对象,哎。
10:14
我们就放在这儿好,其他的方法也都是一样的。走来,只不过呢,这这这一块是按照列名拿这一块按列索引呢,好,那么呢,这这一块也是一样的,就复制过来,好这一块呢,调用的是CS啊,我们这个存储过程的这个获取方法,好,现在呢,我们这几个就定义好了,那么接下来哎,我们只需要非常简单的一步,在马贝利斯全局配置中,哎,你可以告诉马贝利斯,你别使用啊,咱们这个type handle德来处理了。嗯,我们可以用最简单的办法,哎,来配置我们自定义的的,咱们这类型处理器太宽的了,好,自定义的类型处理器呢,我们把我们的权利名拿过来。
11:15
权利名拿过来好,也就是说呢,处理我们employee status对象的时候,用我们这个类型处理器,我们来测试。我们来测试测试呢,我们在这一边测试好测试我们来看它的这个保存。走保存好,保存成功是三零哎025保存的时候呢,哎,我们来看保存的时候,我们让它打印一下,我们这个自定义类型处理器,保存的时候呢,我们可以让他打印一下要保存的的咱们这个状态码,我们把这个状态码呢拿到啊来看一下。
12:02
好。重新测试保存走好,要保存的状态码是200,哎,这个数据记录呢,是30026,我们来数据库查一下,这条记录好30026。好,来查一下这条记录。走来我们来看啊,30026这条记录呢,你看保存的是什么?哎,就是我们自定义的状态嘛,来我们的,呃,这一块保存就是完了,我们要保存的自定义状态码成功,包括我们查询也是没问题的,我们把这个保存比如住掉。注意的,我们把刚才的30026,我们可以查出来。第employee id30026。好把这个查出来,查出来以后呢,我们来输出一下。咱们这个查出来的这个员工的状态码get SP。
13:06
来员工的这个状态,走我们来看啊。哎,这个查是查了它输出log out,呃,但是看起来好像没调用我们自定义类型处理器,这是为什么呢?我们来看一下啊,你看啊,他这个查的字段很少啊,没查我们那个status状态,好,我们让他查一下status状态。好,我们来到employee member中,Get employee8i就是它,你看啊,这只查了真这些,好,我们来把PSPS让它也查出来,这样的话呢,这个字段的封装就会调用我们自定义的类型处理器走。哎,你看从数据库中获取到的是200,那么打印的就是它,如果我把它改为300,哎,我们来。弄成可编辑的。我如果把它改成300。改成300以后呢,我们再来看,查出来它的这个,哎对象是什么呢?那300状态码对应的应该就是木,哎,它封装成功没问题的,所以说呢,这就是我们自定义类型处理器的使用,那么这一块呢,哎,大家注意一下,我们这个类型处理器写好以后,可以在全局里边进行注册,如果在全局注册呢,大家也可以,哎也可以。
14:25
也可以在处理某个字段的时候告诉马贝蒂斯。告诉我们这个my be用什么咱们这个类型处理器。哎,比如呢,如如果是我们保存工作,我们来到这个map里边,好,这有一个保存,你可以在取出employee status的时候,诶有一个属性指定type看了,诶你可以在这里边把这里边写我们那个权里面指定我们这个自定义的类型处理器,所以说呢,这是第一处保存的话呢,你也可以来指定。
15:06
包括呢,我们这个查询啊,包括查询的时候呢,你也可以来指定,而我们这个查询呢,它的指定就不一样。好,我们把它干掉,查询的话呢,你没法,呃在这一块啊,什么在这指定我们employee status怎么封装我们呢,可以自定义来写一个result map,哎,我们写result map封装employee对象的时候呢,按照我们的规则,我们比如叫my employee。而其他的字段,比如IDID这些字段,哎,你写上ch ID,哎,以及它对应着的ID,在关键的我们这个封装字段这个result,比如呢,我们要封装一个employee statuss这一列,这一列呢对应jar b的employee SPS,然后呢,我们可以在这给他制定type handle,所以说呢,这也行,这是又是另外一种好拿过来,所以说呢,我们应该在保存哎增删改的时候指定的type handle了,跟查询的时候type handle的了,都应该是一样的,哎,只是注意一下啊。
16:20
如果在参数位置位置修改,咱们这个开看,应该保证应该应该。应该保证咱们这个啊,保存数据,保存数据和查询数据用的咱们这个type看了是一样的,哎,这样的话呢,就不会出现一些问题啊,这就是我们自定义type handle的使用。
我来说两句