00:01
那接下来呢,我们说一下这个井号大括号,哎,它在取值的时候还有一些更丰富的用法。那么这些用法是什么呢?来看啊。井号大括号在取值的时候可以规定咱们这个参数。可以规定参数的一些规则。哎。这些规则呢,比如我们来看PPT,我可以在取你这个值的时候,指定你这个值的Java类型,以及数据库对应的JDBC类型,哎,等等等等。那么能指定的呢,就会有这么多。哎,我把这些。都复制过来,比如说我们在取值的时候。可以制定这些规则,哎大概的来看一下,比如呢,哎,你这个Java类型JDBC类型,你这个值的JDBC类型,这个呢,是用于用于存储过程的,我们后来会用到。
01:04
存储过程的用到的时候呢,再说这一块呢,如果你是数字,我也可以规定你保留几位小数,哎,比如呢,我规定你这个封装的这个结果类型结果集,哎,你处理你这个数据的类型处理器,呃,以及这个JD bc type name啊跟这个呢一样,哎完了以后呢,还有一个这个expression。这个翻译过来叫表达式,这是未来要支持的。准备支持的功能。哎,他马蒂斯现在还不支持啊,写这个也没啥用。那么呢?它未来可能想要支持OG表达式或者一些其他的表达式功能。那么接下来我们就来说一下这些丰富的用法。这些用法看起来非常多,但是只要我们没有去用存储过程,那么很多其他的呃去写都是没必要的。
02:02
那么呢,主要我们就来说一下这个JDBC呢,通常。需要被设置。也不是说一定要被设置。主要需要在某种。特定的条件条件下。那么我们来说什么情况下这个JD bc type要设置呢?翻译过来就是数据库的类型。这是在在我们这个数据的时候。有些数据库。有些。嗯,数据库可能。不能识别。My beat。No。默认处理。然后呢,比如我们这个Oracle。
03:00
如果你这个数据字段为弄的时候,我们这个Oracle就会报错。这个时候我们必须来指定报错。告诉orac口,哎,不是告诉orac口,告诉MY这个JD bc type是什么类型,比如说呢,我们来把这个情况演示一下。好,那演示呢,我们就切到Oracle环境。来到我们全局配置里边。现在是MY环境,我们切换到Oracle环境中。好,Oracle环境中,我们以保存我们这个为例。保存方法好,员工添加,员工添加的时候呢,假设我们这个啊,Email我们传一个弄我们来看会出现什么现象。Oracle在这一块好在这一块啊,Oracle取值在,诶取值在这行,我们来到方法里边进行测试,我们来看前面的添加方法。
04:05
好,这一块是添加。来,我添加一个JERRY3。加入三这是一个正常添加啊。我们来看一下。走。走。诶,这是一个正常添加没问题。我们呢,现在把它这个email,我给它作为空。我们来看一下。作为空,以后我再来保存。走。哎,出错了,出错的原因说无效的类型,比如说呢,O入口不能区分出我们这个啊能值的这个类型,他说是无效的类型。无效的是什么呢?叫JD bc type。那JDBC派。Other。最终呢,报为无效的类型。
05:03
那我们来看一下这种情况在MYSQL下会不会出现呢?哎,我们某个字段为空了,好,我们来全局配置文件里边。没有切到my circle环境下。再来测试。好,还是这个方法,我们用MYSQL情况下我来测试保存。走。哎,买是没问题的。那么呢,在or入口下我们来保存一个啊为空的字段啊,会出现咱们这个错误,错误的原因呢,说有一个叫JDBC无效的类型。那么呢,到底是为什么,它是因为咱们这个MY。对所有的空。所有的呢,都映射的,映射的是咱们这个JDBC里边的咱们这个啊other类型。
06:06
好,我们来可以看一下,在我里边有JD bc type这个枚举类。这个枚举类呢,包它跟数据库里边的各种类型进行映射,而这个types就是对应数据库里边的类型,我们来看啊。呢,有nu对应数据库的nu,有other对应数据库的other,而默认我们买,也就说所有的nu字段它是对应这个类型的,这个other对我们买背对我们Oracle来说它是不认识的,而我们my circle它可以处理。说呢?默认。对,所有的钠都是映射的,是原生JDBC。Other类型。这样的话呢,我们这个O入口不认入口不能正确处理。
07:07
不能正确。而我们这个马circle啊,它是一个,呃,遵循咱们这个S规范比较好的一个数据库,它能兼容这些东西。那么呢,我们来看一下怎么办,我们只需要再在这里,诶,如果我们是Oracle my情况下我们都不管了,如果是orac口环情况下,这个email可能会为空,为空的时候我们来指定一下JDBC。如果为空,你用应用的JD bc type应该是那而不是。默认呢,我们买用的是它JDBC里边的other来作为空字段的映式,而我们给它改为呢。改为如果你这个字段为空,你对应的是JD bc type里边的啊这个类型。
08:00
这次我们再来保存。好,这一块会为空,我们来切换到Oracle情况下。我再来保存,看Oracle还会不会报错。走。走,那么这个Oracle它不报错了。它是无法将值插入,比如说呢,我们这个有可能为空的。咱们有个围空约束吧。我们来连线Oracle看一下啊,应该是有那个非空约束。嗯。好。我们来先看一下,描述一下我们这个表意。看一下我们email是不是有非空约束?哦,还真是,你看啊,这个email字段是不能为的,如果能为的话,这就是yes,有这个yes标志不能为,我们来修改一下。
09:03
来修改我们这个employees这张表啊,修改它这一列mode,我们email。这一列让他呢,可以为纳。好改了啊,改了以后呢,我们来重新在这测试插入。刚才是已经插入了,只是呢有非空约束,它没法将值插入,而不是报那个什么JD bc other,它不能识别。走。啊,所以说呢,Oracle插入是没问题的,也就是说呢,我们最多要设置的就是这个JD bc type属性,因为在Oracle的时候,哎,Oracle为none的字段,它可能会出错。这一块注意,那出错的原因是什么呢?我们来看一下啊,在我们这个马贝蒂斯文档里边,打开马贝蒂斯官方文档。有一个全局配置。全局配置往下看。
10:02
往下看,哎,J d b for,就说呢,如果为值的话,JDBC用什么?你看默认用的是other,而这个other Oracle不认识,所以说呢,我们可以第一种办法。最根本的原因就是在这儿。这是也是由于。由于咱们这个全局配置中。咱们这JDBC。For now,它的取值是other。也就是说呢,我们Oracle不认。不支持应该是不支持。那么这样的话呢,啊,我们就有两种办法,第一种办法啊,我们可以使用我们这种井号大括号取值的时候指定。哎,指定JDBCPI等于阿萨。这样的话呢,呃,就只会影响我当前这个SQ语句里边的JD,那么当然了第二种我们也可以直接改全局配置,把全局配置的JD bc type放now。
11:10
改为什么呢?我们来看啊,会有那会有other,会有what差,那我们就改为,那如果你是none就改为呢。啊,所以说呢,两种解决办法。都行。我们把第二种也看一下。那么第二种呢,我就不在email字段设置了。Email字段我在这儿不规定了。我们把它。注释一下。啊,注射一下email字段我就不规定了,那么呢,如果不规定那自然就有错了,我们来看JDBC4我要插入。在Oracle中是不行的。还是无效的类型是你这个other JD bc type other有问题。
12:04
那么呢,两种办法,你井号大括号啊,取email的时候给这设置,或者我们来全局配置里边。好全局配置里边把这个JD bc type。把这一块的设置。我们,哎,它默认用的是other,我们用now。呢,接下来那么这个JDBC空的时候,我们来看啊,这个枚举里边原来为空会是用会对应我们这个circle包下,哎,你看啊,这个type是circle包下,对应circle下的other,而现在呢,我们就对应成我们这个下的这个呢or都认。来,我们来测试一下。现在就行了。哎,Oracle也行了,要是说呢,我们你可以不给这写在全局配置里边写上也行,我把这个配置拿在这儿。
13:04
啊,如果你即使你来切换MYS也是没问题的,因为马S也认识这个呢。切到马色扣,我们来看一下。就Oracle JD bc type是不认,只认识这个走。哎,你看我们马下也是没问题的,所以说呢,大家也可以用第二第二种全局配置一劳永逸的办法,那么呢,我们这个哎接DC type,我们可以作为演示,让大家知道一下,我们可以在井号大号取值的时候有更丰富的操作规定一些其他的规则。
我来说两句