00:00
好,下面呢,我们来看一下这个查询啊。哎,我们来测试这个查询test。哎,这个呢,我们是一个query了,查询这块呢,有很多这种情况,所以我就先写一个QUERY1,诶首先呢,你也得需要创建一个query re的一个对象,毫无疑问,然后拿着这个run点,我们需要做的是一个query query这块呢,我们看到它也有很多重载的方法,一直到这,那么如果呢,你是一个事物中的一部分操作,那我们就需要把这个连接传进来,所以我们就可以考虑从下边这几个考虑,下边这几个里边呢两个都已经被depar了,那就剩一个了。哎,那咱就可以考虑用这个,那你是个连接传一个SQ语句,搜Q语句里边可能有占位符,把占位符填一下,诶这呢是咱们自己在定义的时候呢,有的这样几个参数,然后呢,你发现多一个。
01:01
对,叫result set handler。结果级的处理器,嗯,干嘛用的看一下啊,我们就选它就选它,那咱们就一边写一边说,首先第一个呢,连接GBC,哎,Us。第二啊,Get connection这个呢,咱们还用得了一德录一了CR1得到一个连接,然后circlel呢,就是你要查什么。比如我们查询啊,表中的一条记录啊,Select ID name email birth from customers where ID等于占有。哎,我想查询这个表里边的一条记录啊,查谁呢?哎,比如把这个哎于小飞查出来,哎23。嗯,写好了,那写好以后呢,这里边我们说还需要传一个参数。
02:01
那这个参数它这块呢,是因为误认为我这成了另外一个方法啊,其实咱们现在要调的是那个,你看他给我指定指指成这个了,其实咱们调的不是这个方法。Query里边找一下刚才我们这个调的query方法。连接。哎,这个是吧。我们传了个链接,传了一个circle,然后也传了这个障碍符的一个填充的可变形参,现在呢,需要一个result set handle,叫结果级的一个处理器,呃,说白了,我们这个查询呢,毕竟稍微复杂一些嘛,相较于自然改,就是你这个到底返回的时候呢?呃,怎么去处理你这个返回的数据啊,这里边提到了一个result set handler,那CTRLC一下result set handler是什么,我们在这里边找一下。啊,其实在这也能直接看到啊,这叫result set handle就是它,那遗憾的呢是它是一个接口啊,那现在呢,我们又需要传它这样的一个实例,那你只能是考虑这个接口的具体实现类了,那实现类都有哪些,这块呢都是。
03:07
这块都是啊,看着呢就有点眼运是吧?哎,那我们剖析一下呢,其实就比较简单了,咱们就先奔到其中一个我们需要用的一个去啊,这个呢叫结果级的一个处理器,就是为什么说结果级这块,这个返回数据这块呢,这麻烦呢,因为呢,你返回的情况呢,是比较多样的,咱们自己写查询的时候呢,说返回一个对象,返回多个对象构成的集合啊,你这个get一个count,看多条记录啊get marks birthday是吧,Birth啊你就返回date,就是你返回的情况确实多种多样,那么为了应对你不同龙这个返回的这个结果,所以我们呢,定一个标准,就是这个接口,然后下边呢,我提供了各种各样的实现类来应对呢你实际的需求,比如说我们现在呢,还提一个最普通的需求,返回一个对象,那这里边我们就可以用它的一个具体的实现类,叫做b handle德。
04:03
B。我们说一个对象呢,哎这个类咱们都说封张伟叫一个扎病是吧?哎那一个病含在哪,就是你返回的是一个对象,哎就这个意思,哎病含在这一进来这带个泛型啊,那就看你具体呢,想封装的是哪一个类了。比如咱们这个问题当中,咱们想封装的其实是那个customerly对吧,所以我们就可以这样来做了,我去new,呃,先声明吧,我就要b handler哎,咱们希望呢,诶封装呢,这不就是个customer,哎,我就叫一个handleler了,那就new一个ban handleler啊这个我们相应的都给大家去倒一下啊,先把它呢导进来,这个位置呢,其实也加上一个。啊,对吧,诶customer呢,我们也需要呢,去import一下。哎,这个你一个并哈,这这样写应该报错了。保存一下,看一下它这个构造器的问题。啊,没有那个空单构造器,这里边呢,需要还把这个class呢,得传一下,那就传一下呗,这呢咱们不就针对的是customer。
05:07
第2CLASS。哎,这就可以了,然后呢,把这个handle呢CTRLC诶放到这儿。这就行了,这个异常呢,咱是咱们先去slow一下啊,诶,当你把这个handler往这一传,相当于我们就有了一个具体的result,呃,Set handler这样一个实现类的对象了,然后直接呢,CTRL1,你看自动的就给我们生成的就是一个customer,诶这个customer其实就是我们想要的查询的这条数据。保存一下。来执行。哎,这边于小飞就过来了。哎,所以这里边呢,咱关于这个查询这块呢,呃,先说明一下啊,此时呢,咱们用的这个叫B,哎哈德。哎,它呢,诶是,哎咱们说的叫result set handler。
06:03
哎,这个接口的,哎,实线类。哎,用于封装。嗯,表中的一条记录,那表中一条记录封装完以后呢,我们相当于是返回的就是一个具体的对象了,那就是这样个情况,这叫bin handle德,那用法呢,其实我们直接呢,这不也是参照的API来做的啊行,那这呢叫B德,那原来呢,咱们还做过呢,我想返回多条记录,比如说我把这个呢,CTRLC一下,哎,粘到这这个呢,我改成ID小于,那此时呢,我们返回的就相当于是多条记录了。那多条记录呢,这时候我们就不能用这个叫并handle了,因为它对应的是哎一条记录了,那应该用谁返回去看一眼,在并handle了后面呢,有一个哎b list handler就是你一个对象是一个B,多个呢,不就是构成一个list吗?哎,就用它点开以后,它也是这样写的。
07:05
这块呢,也是这样写的,是不是这个套路就出来了,哎,所以此时呢,我们就需要去声明叫b list handler,这呢还放这个customer。哎,这个呢,我们还诶诶还称为呢,叫一个handler,又一个be list handler,哎这里边呢,还需要我们把这个customer点诶class传进来。IVE。诶导进来,然后这个呢,还这样去传,哎这个哎这个这个就不能这样写了是吧。在这CTRL1,诶得到一个list。那下边呢,我们就需要呢,去诶打印这个list了,哎例点哎,我们还用这个for each啊。诶,这样就行啊,保存来测试。
08:01
看这不就都查出来了。哎,所以非常的方便啊,就是我们这里边为什么要提供这个result set handleer,诶刚才已经说过了,这块我们也强调一下,就是为了应对你不同的查询的这个情况啊,那现在咱们演示的叫b list handle,哎它呢也是作为result set handler它的一个实现类,哎它呢是用于封装表中的多条记录构成的一个集合。哎,构成的这个,哎集合了行,这就这个情况啊,然后这呢,咱们是测试的其中的啊两种情况啊,这个我这是用lo其实不合适了啊,因为咱们最后这不还得关闭这个连接,哎你要不关闭的话呢,这块相当于存在一个内存的泄漏问题啊。那把这个呢,我们给它干掉一下。诶,四里的第二,诶,Close resource连接这个没有这样,诶这要处理起来又又得稍微严谨一点啊来拆开一下。
09:03
这样。嗯,这么着啊,这个下边这个也也也得这样啊。哎,这个咱们。用的是对私立的啊close。嗯,关闭,然后这个干掉。嗯,放进来哎闹一下行,这个呢,是我们说的这个b list handle德,然后呢,我们看到呢,诶除了这俩之外呢,还有挺多其他的啊。嗯,听说其他的,嗯,比如说像像这块这个呢,叫arra array,其实这块呢,也是封装的是一个对象,只不过呢,这一个对象呢,哎,是一个数组的方式来呈现的。
10:08
啊,然后这个呢,叫array构成的一个list啊对,你别翻译成就a list啊,是array构成list,有点像我们这个B构成个list一样,一个对象呢,相当于里边我们各个属性呢,是作为这个数组的一个一个的元素出现了,嗯,这是它,然后呢,后边这块呢,叫map handleler map list handleler map呢,就像一个对象呢,我们作为一个map啊键设对的方式来封装,比如说你这个键呢,叫ID值呢叫无是吧,内键啊值呢,诶刚才比于消费是吧,哎,就是以map的方式,那你要是很多个map呢,就是很多个对象,哎,Map构成的一个list,咱们把这个呢也可以稍微。演示一下啊,Map handler和map list handler。嗯,这个跟咱们整个这个结构呢,框架是有点相似的啊,我就直接呢来粘一个这个结构了啊。好,这个呢,咱们演示的这个叫map handler啊,这个是三。
11:06
行,这块呢,主要的变化就在这,咱这的封装呢,其实也是一条记录啊,哎,我们去声明叫map handler,看一下人家这个构造器啊map handler1进来,诶你看注意这块呢,它是没有这个泛型了啊。他没有泛型了,哎,它相当于呢,是实现了我们这个接口里边是这样写的,那result set handleer,它里边呢,是把咱们原来呢,Result set handle里边封装的是一个对象,现在呢,封装的不是一个对象了,实际这个对象呢,我以一个map的方式来呈现的,诶这个呢,就没有对应的这个呃,发行结构了,然后构造器直接呢就是空餐的了,行,它这个还省事了啊。嗯,Handler等于。哎,你一个啊map under就这样呗。Ctrl shift o一下,然后这个返回的要改一下。
12:00
诶CTRL1诶返回的人家其实就有个map了,诶这样子啊行,那map的话呢,我们这块呢,需要对人家进行一个遍历了,这个咱们就简单一点啊,我就直接去打印了来保存。行,完事了啊测试。诶你看这时候呢,其实查出来还是易消费啊,只不过这时候呢,我们不是一个对象的方式呈现的,而是以一个map的方式,诶把这易消费里边各个,呃,这个对象的各个属性呢,就以键值键值哎这样的方式呢去呈现。哎就是这样子的啊,所以呢,哎它呢是一个时间类,哎用于这不能叫封云表,封装表中的一条记录了,应该说对应啊哎对应表中的一条记录啊,将这个哎字段哎及哎相应字段的值哎作为哎咱们哎map中的这个键和值,哎K和Y6。
13:04
好,这呢叫map handler,那么相对应的呢,这个map list handler,诶把它呢,CTRL一下再来,哎,这个呢,诶大家基本上也就比较清楚了啊。这个写个四。嗯,这个呢,我们又是小于某一个了。这个呢,把它改掉。嗯,回来后退,哎,Map list handle德R,嗯,这个里边呢,人家也没有带这个泛型了啊,这个构造器呢,也是这样子写的,OK,那我们就直接呢声明map list他。诶,这样,然后把这个handleer呢,给它扔进去,Ctrl shift一下。你看这个返回值类型能猜到不?对吧,嗯,对,就是我们呢这呢,其实对应的是一个对象,你现在查的不是多个对象吗?封装在一个list子当中,哎这个呢,我们,哎这样子for each啊system.out.out冒号,哎打印的每一个呢,其实都是个map。
14:23
对吧,哎,就是这样个情况,哎,那么后边的话呢,我们针对于查询的这个不同情况,你这里边就可以,呃,选择不同的这个result set呢去选行这呢,我们演示这四个啊。
我来说两句