温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
诶,我们刚才说了通用map呢,默认情况下会忽略address和C,就是我们这样的复杂类型,那我们实际开发过程当中呢,又会在有的时候确实需要把复杂类型呢,也保存到数据库里面。特别是哈,咱们说实在的,这个实体类里边存在东西呢,其实很少是跟数据库没关系的,基本上来说呢,咱们还都是会遵循OM这样的映射的关系啊,我们呃,类和表对应字段,呃,Java的属性和数据库表的字段对应啊,然后Java的对象呢,和数据库表里边的记录对应,还是会遵循这样的关系,所以说呢,我们既既然这个值在这写了,那90%的可能呢,他还是要去给它存到数据库里边的,那下边我们就看看这个怎么能去做到哈,它默认是忽略的,我们怎么能做到,我们怎么样去给它设置一下,就让它不忽略了,我们先看这个address哈,呃,对于这种address这样的东西呢,我们有两种办法,哎,第一种办法就是说我address呢,另外去建一张表,然后呢,让address呢跟user呢去建,建立一个主癌键的关联关系,诶就是我们以前讲过的买贝蒂里边那种,呃,一对对一对多啊多对一。
01:18
啊,那种多对多哈等等那种那个关联关系啊,那就是那那是一种办法,那么我们在这儿呢,咱们说另外一种情况。Address呢,在user这个类里边是一个字段,一个属性,在我们数据库表里边也是一个字段,我们并没有去给它创建一个新的表啊,这种情况,这种情况呢,我们就需要采取类型处理器啊,这样的办法,就是所谓的买B斯给我们提供的type handler这样的办法。哎,就因为你想哈,我们Java里边呢,这是一个这样一个类型,那你数据库里边你不可能再去建一个address这样的类型是吧,我们数据库里边呢,就是一个字符串,这个字符串呢,我们人为的给它设定一个规则,比如说呢,你有三个值,那我三个值,那我用逗号给你分开,哎,你也可以用斜杠分开,你也可以用星号分开,只要是你一个确定的规则就行,诶我给他一用这种规则呢,转换成一个字符串,再把这个字符串保存到数据库里边,你从数据库,数据库里边去取这个值的时候呢,我们也是,哎,通过字符串还原成这个对象,然后呢,再把它这个取出来,采取这样一种办法就好了。
02:32
所以说呢,我们看哈,这个我们Java里边呢,是我们address这样的对象。然后呢,到我们数据库里边呢,它就是一个字符串。诶,这个,那么我们就需要经过一个东西,就是我们的类型转换器,它是双向的,诶我们可以,呃,把Java对象通过类型转换器转换成我们的字符串也可以呢。
03:06
通过字符串经过类型转换器,哎,再把它恢复成我们的对象。是吧?嗯,就是我们说在这呢,我们需要去针对这个address哈,对于它的这个处理呢,我们需要有我们的类型转换器。自定义的啊,自定义类型转换器,因为我们这种复杂类型的,像address这种啊,完全是我们自己自定义的一个类型,那当然没有办法指望MY或者通用map呢能够识别到,哎,所以说在这呢,我们需要去定义一个自己的type handler,那么我们下边看看啊,咱们来具体的来创建一个type handle。
我来说两句