00:00
好,接下来呢,我们来看一下咱们这个自定义type handle了,哎,类型处理器来处理我们枚具类型这个事情,那么呢,这个说它之前我们还是复习一下这个类型处理器的作用,我们在讲源码的时候呢,哎,我们也发现了,在执行增删改查的时候用statement handle statement handle执行的时候呢,比如参数,哎咱们S预编译设置参数,设置参数呢用的是handle,处理结果用result set handler,但是它们在设置参数的时候,哎,它是调用的type handle set,设置参数的处理结果的时候呢,也是调用type handle的get result方法返回结果的,所以说呢,我们整个type handle了,他在我们这个过程中呢,就担任了我们这个数据库类型和我们这啊扎B类型的,咱们这。
01:00
映射工作,那么呢,我们就以某一个type handle为例,好,我们来找到咱们这个type handle了,哎,我们来看这里边呢,有一些type handle了,比如呢,哎,有一个叫有一个叫string handle了,我们就来看一下string,哎。字符串的type handler它呢继承了best type handler哎,这个base呢,我们也可以看一下,哎,基础的type handleler呢,它哎实现了我们这个type handle接口,这个type handle接口呢,就规定了一些方法,这个方法呢有set para,哎它的作用呢就是给我们prepared statement里边来设置参数,这就是调用我们原生的JDBC编程给prepare statement里设置参数,而这个get result它就是从我们返回的结果集里边,诶按照列名拿出一个值封装成我们扎va b对象。这个呢是按照从。
02:02
列的这个索引,拿出值封装成我们扎B对应的这个数据类型,这个呢是从我们存储过程中,哎,拿到值封装成我们这个啊数据类型,而我们现在呢,来看我们这个string type handle,哎,在best type handle里边呢,它实现了我们这个啊setter方法,这个方法里边呢,如果你传过来是空参,它就调用空参的处理流程,哎,就是在这儿,好,我们来看啊,否则我们传的参数它就调用一个set no nono,哎,不是空的咱们这个perter,而这些呢,都被我们子类呃,实现了,我们子类呢,有一个叫set no,那那不是咱们空参数的per这个方法,你看啊,这个方法的实现也都非常简单,就是调用prepare的set string啦,Set浪啦,Set特啦,就是调用这些方法来把我们这个传过来的数据保存。
03:02
存在我们数据库中的,哎,这是我们type handle了,包括其他type handle了也一样,比如呢,我们来看一个。Int哎,Long或者long,哎,它这一块呢,就是调用set long获取值调就是调用get long,所以说呢,这就是操作我们原生JDBC,那么我们就来看一下MY中对枚句类型,它又是怎么处理呢?首先我们来看枚举类型type handle。看到了cap,看了里边有没有跟枚举相关的处理器,哎,这一块有,你看啊,这里一块有一个叫,哎,利用枚举的这个or,这是利用枚举的索引,哎,我们来看啊,它在这一块设置值的时候呢,它set int,它是拿到我们枚举对象的这个or索引,而另外一个呢,处理枚举。哎,这个枚举呢,我们来看啊,它是拿到枚举,哎我们prime是传过来枚举对象,枚举对象的name,哎就是说呢,枚举每一个枚举的值有枚举的索引和枚举的名,所以说呢,这两种不同的啊枚举类型处理器,哎它就能会产生不同的效果,那我们呢,就以employee对象作为例子,假设呢,它里边哎有一个枚举类型就叫employee status,哎员工的状态,那就叫emp status,这个员工的状态呢,比如我们当前员工是不是登录进系统了,Log in是是登出了log out是不是被管理员删除了,比如remove等等,我们就来创建一个这个枚举对象来表示员工的状态。
04:47
走。好,我们创建一个枚举,好这个枚举里边呢,有一些取值,比如log in,表示我们员工当前登录进系统啊,Log out他登出了,哎,还有一个呢,它被管理员移除了,哎,等等等等状态,大家可以定义非常多的状态,那么呢,接下来我们在employee对象中就会有枚举这个类型,以后呢,我们这个状态啊,员工的状态,我们就用这个枚举对象,我们以前呢,比如真的这些,我们也可以用枚举的,但是我们写了一个string,哎,这些,好,我们现在给它添了一个get set方法给它填上。
05:27
我们来看对于马贝斯如何处理这个枚举,我们来到我们这个map里边,哎,不是map,我们把这个枚举填上以后呢,我们来测试。Test my如何处理美句,我把这个我保存进一条数据,我看MY贝在数据库里中,哎,对,枚举这个字段,它保存的是什么?所以说呢,我们在连上MYSQL数据库。
06:02
给我们这个employee表里边呢,我们添加上一条能保存我们这个员工状态的这一列。好,我们来al table,我们来修改al。不是a lot啊,Lar table lar table,我们来修改我们这个TPL-m employ1这张表,然后呢,我们添加一列,添加了这一列呢,我们就叫EP sta啊,跟我们Java属性对应起来,它的类型呢啊,我们为了保存方便起来,我们给它一个啊。11。好,走。来看好添加上打开好刷新,那我们这一列就来保存员工的,咱们这个嗯状态,我们接下来我们来看一下,我保存上一条数据get。好。
07:00
然后呢,我们这个session,第2OPEN session。好,然后呢,我们从这个open session中拿到我们这个操作员工的employee member get member叫employee member。点class。好,我们来调用咱们这个员工的保存方法,Member点来有一个叫添加员工and EP来传入我们这个员工对象来就来一个,来创建一个employee对象,Employee等于又一个employee,保存员工的话呢,Last name。其他的我们就。测试我们这个枚举的,哎,Email也是我们这个枚举的。And。And。硅谷点。com。
08:01
啊。真的一点。com好。比如说呢,我们把这个employee传进来,让它保存,保存完以后呢,我们来调用。少个号,好我们来调用一下啊,咱们这个提交open session.commit。好,然后呢,open.close好,我们来说这employee里边呢,有一个employee status,它表示我们这个员工状态,而这个员工状态呢,假设你没给值,我们可以给一个默认值,哎,就是取出枚举里边的,比如呢,默认就是它是登初状态好那么呢,如果我们来看保存这条数据,来到这个保存方法。添加员工好就是它好,这里边我们再多添一个字段,叫employee status,这employee status呢,我们也是直接井号大括号取出这个N1。
09:08
Employee对象中的这个属性的值,我们来看保存的时候,在数据库中保存的是什么。把它们都关掉来测试。好,我们来测试保存的都是什么,哎,保存完了以后呢,就说保存成功。保存成功,我们可以来获取一下这个自增ID,我们把拿出的数据。把这个数据我们也拿出一下,好,自增ID我们就用柚子,哎,使用自增的ID,哎,它对应我们这个扎宾宾里边的key property对应我们这个ID属性好,我们来测试。保存成功,我们这个ID呢,就是employee第get ID。
10:00
测试。走。好,我们这个环境还没切,这个还是入口环境。切换到马口下。好,我们来测试。走。好,保存成功了,他的ID是300,哎,我们之前执行过批量操作,我们来就把这一号员工查出来,行,From t BL杠。Employee。对象,Where咱们这ID。ID等于这个来看一下保存的这个员工他的状态,诶你看啊,这个状态呢,默认就是我们这个枚举的名字。也就是说呢,我们枚举,我们来测试一下对枚举的使用啊,这个枚举呢,我们来回忆一下,测试咱们这个枚举的使用。
11:04
这个枚举对象呢,你拿到一个枚举对象以后,哎,比如呢,我们生拿到一个枚举对象,哎。Employee employee status第哎,我们来拿到一个枚举对象log,好,然后呢,你输出这个这个枚举对象呢,会有两个东西,一个叫or,哎,这是枚举的索引。所以。还有一个呢,是我们这个枚举的名字,名字名字好加上log第二好这两个,然后呢,我们走测试。你看啊,这个枚举的,所以呢是零号,哎,我们这个,哎是如果是登录状态,哎,这个就是零。
12:07
哎,这是登录,这是一,哎这是哎,这是012,它是从零开始的,好,所以说呢,给数据库中保存的呢,是我们这个logout,也就是说我们这个枚举的名,哎枚举的名就是咱们这个login,所以说呢,咱们这个枚举的有它的名和它的索影啊,我们现在默认,我们需要知道的是默认。默认马贝利在处理枚举对象的时候时候。保存的是枚举的咱们这个名字,哎,那么呢,就是利用了type handler。哎,我们这个type handle type handle,这个type handle里边呢,有一个枚举处理器叫。Type,哎,枚举的这个类型你看啊,它在保存的时候是拿到枚举对象的name值,所以说呢,默认它相当于是拿这个类型处理器的。
13:11
拿到他的。哎,也就说使用它处理的,哎,我们也可以改变,哎,使用使用另外一种,使用咱们另外一种枚举的类型处理器,太看了,好它呢,还有另外一种叫。Animal or好这一块呢,它保存的时候,你看他拿到的是枚举的这个索引,好,CTRLC,好,我们来,如如果我要改变使用它,我们再看一下数据库保存新的值会是什么,那如何告诉我们要使用它呢?哎,我们需要来到。全局配置文件中,哎,然后呢,这一块我们知道有一个叫type type handler,哎,类型处理器这一块呢,有一个叫type handle了,我们可以声明用我们这个,我用我们这个。
14:09
Animal or type了,哎,我们处理枚举的时候呢,你用它。好。这一块有一个E好,那么这一块呢,它能处理泛型,我们告诉你如果你处理,如果你处理我们哪种类型的处理,我们这个employee status。这种类型的时候,你用这个霉菌处理器,如果我们不写,那就是全部类型都用这个枚菌处理器,好,我们现在再来测试。测试一下这个保存,刚才我们测试保存呢,它保存的是咱们这个名。包括获取也是拿名获取。我们现在测试保存走。保存成功30018。他刚才我们保存的是枚举的名,我们现在来保存走,你看又变成枚举的索引了,百01,所以说呢,我们可以选用不同的枚举处理器,但是不管是选用名还是选用索引,你查询保存都是呢没问题的,但是我们这种情况一般不多见,我们需要自定义,好我们来看怎么自定义。
我来说两句