00:00
呃,咱们刚才给大家介绍了一个朱莉这个德鲁伊这个连接池哈,接下来呢,咱们就真正的应用它一下哈,应用它一下。啊,怎么应用呢。妥了。呃,这样吧,呃,再重写功能啊,重写功能。重新来一个全都重来的。咱们这个就叫test。Judy。好,该拷贝的炸包请拷贝一下拿上来。这用不用。这个是这个玩意是基础包,只要你连数据库连不是数据库啊,只要你连Oracle不管你怎么连,它是必须有的啊,必须有的。就是不管你吃啥,这个就叫食物啊。把它转过来。好了,一共有这么几个。第一个d Bo类,第二个主体连接时,第三个数据库驱动包啊,三个引引到咱们的项目中。
01:10
OK啊,那咱们接下来写一个什么样的功能呢。写啥呀?能简单点吧。好吧,简单点啊,呃,一会儿呢,我现在写一个什么功能呢,我要查询所有的科目。所有的科目好吧。然后一会儿大家做练习的时候,我要求你使用这种方式查询,分页查询啊。好吧,我写简单点啊。首先建一个类啊,先接口哈。叫什么呢?科目的deal。查询全部,那里边儿肯定装的就是全部的都是。对吧。咱要盖上啊。需要什么参谋?
02:01
不需要啊。哎,正好去到这个接口了,再给大家来帮大家回顾一下。接口中的方法都是。抽象方法没问题吧?而且是不是也是public的。对吧,那接口中。能写这个吗?不能吧,报错了是吧,所以记住了啊。接接口中的方法,它是默认他们这的啊,OK,然后接口中的变量呢。行不行报错,为啥嘞。说什么?没有被赋值是吧,哎,给个值。OK。对吧。好了,那这这接口中这个变量它能不能被改变。为什么呀?哎,这个也得记住了啊,接口中的变量啊,是常量OK。
03:00
好了,就就就回头这么多啊。呃,这个类是不是引错了。我见的subject的实体类的吗?没有呢,他这个默认给你引的是这个安全架构里边的一个subject的包,这不对啊,这不对,所以。说到这,这什么什么意思,以后一定要多观察这音炮的,你不要说报错就瞎点,一看这音炮子啪这点上不要瞎点。好吧。引错了,跟没演一样。这不对啊。他这块呢,需要你去create一个,第二个啊,需要你创建一个。刚才之前用过models,用过用过VO,这把用。四个长的包全给大家用上啊,好了,来把这几个里边这几个简单哈,ID。
04:02
对吧,还有一个什么。ID是吧?该晒的。来了。科目。好嘞。搞定了吧,也的是没问题啊。好,然后嘞,咱们DAO是不是给它建实现类呀。Q点。下来。叫做DAO的实现类。他继承的。DB。这个得搜一下。呀,咋还没写呢是吗?垃圾成个屁呀。先实现接口吧。是吧,先实现接口啊。
05:02
来吧,关键的是这个代码简单,关键是DB类的封装。啊,DB类呢,之前我是不是叫to工具啊。学长,有的人呢,也习惯,刚才我给大家查了一个单词叫。Comments,有的人也会叫这个包名commons,好吧。这里边儿扔的是DB0。我又给大家换了个猫名。哎,好了,这里边儿呢,咱们只有一个目的。什么目的啊?是不是咱们要。获得数据库的连接啊。啊,在这里边儿呢,我暂时先放在这儿,我先什么都不写哈,先什么都不写。好,我先写这边。这边的话呀,看好了,这边首先咱们要查询全部的话,那就是定义命令。再来个星。
06:02
From subject。OK吧?好了,来看好了啊。在这里边第二个叫query runner,另一个query runner写错了哈。直接。行吧,你包。安排齐了,好嘞。然后呢,咱们就快点查询。OK吧,大家其实看这个方法。啊,有的query有的query第一个参是不是用到连接啊。是不是用到连接连接连接啊,而有的参你会发现,再比如说随便来个这个吧。它这个里边的参数中根本没出现过连接对象吧。那你说那这种方法难道它就不需要连接了吗?
07:06
引发这么一个联想啊,它没有连接对象,那没有连接对象说明这个方法肯定是别的地方设置连接是吧,那连接是必须有的,你不连接的话,你怎么知道炸谁的碉堡啊,我上哪拿数据啊。对吧。OK,那这块呢,就引发了一个思思考,这个连接对象跑哪去了?跑这来了,在这做笔记啊,写到这吧。Q,点是吧?该方法,呃,回撤。该方法。如果传入。连接对象。
08:00
连接对象。则。CN。需要手动关闭。什么叫手动关闭?就是你得写close那个代码,OK吧?如果传入了哈。好,那他肯定有另外一种。如果。该方法不传入conn对象。则一定要在。六。Query。Runner中传入数据源。这种方式啊。来。自动构建连接对象。此方法,哎,行行,别换行了,此方法。连接。自动关闭。
09:02
那你咱就对比一下,你说谁好,肯定自动的好是吧。好了,那第二句话到底啥意思呢?他说该方法如果不传con,也就是说我这个query这里边儿,我不准备在这里边写这个con。那么我就一定要在new query runner的时候里边就扔数据源啊。也就是说这个里边我一定要扔一个变量,假设这个数据源我暂时叫DS,好吧,我暂时叫DS啊慢慢来看,然后呢来构建,来构建con对象,那这个C对象什么时候构建呢?当你这句话一拗完。对象已经构建完成,你只需要正常的往下走就可以了。对吧,好了,那现在的问题是什么问题呢?这个DS是个什么鬼,我这叫是不是叫数据源啊。好,那之前咱们这块是不是要con,我是不是封装到这个DB类里边了,现在我要把数据源封装到这个DB类里,所以这块我刚才说没写。
10:07
数据源protected,这个数据源就叫做data source。That sounds。Desk。这样。OK点好,然后这边呢。这个城。Extend d类了。Ext t DS DB。好了,是不报错了。我报多少?好,这边呢,我是不是得得给他补全啊。哎,这块咱们等会补啊,我把这个代码已经写到这儿了,我先把它搞定了啊好,他这块就不需要传这个con了,然后这块干嘛了,查询表中全部数据,那肯定要把一个一个的对象装到集合里边吧。
11:01
所以这块啊,直接就可以返回了,别的这需要穿看啊。另外一个B类。然后里边是subject.class前边泛型为。他。拆开直接写。Yeah。需要关闭了吗?不需要了。这就是茶叶全部。好来看啊,那这边这个代码写完了,你这个DS在这声明的时候是不是还是空啊。好,来写个方法,Public void,这回咱就叫不叫get连接了,叫get。DS获得了数据源。获得数据源。好,这个数据源咱们的租赁数据库啊,会帮你提供好啊,看好怎么获得的,首先呢,咱们是不是还是得去拿那几个参数啊。
12:02
不管你啥数据库,你都得拿那四个参数。来。在这里边创建src下创建一个practice文件。咱就叫啥呢,就叫这个这个这个数据库点properties。好,在这里边写这个几个参数吧,CTRL中文部分删掉。好,然后这块呢,第一个是。啥驱动管理类,驱动管理类是吧,然后这个链接这块改一下啊。叫做幺九二点幺六八点,哎,我是多少30.22是吧。然后123好了。改完了。这就是我这个DB链。DB,这个配整件。写在这儿。这个。没啥没没啥搞的啊,这些参数默认改过来就好,好这个文件有了,看好了啊,写代码了。
13:05
怎么获得这数据源呢?首先是不是得把这个文件读进来啊,得把配置文件读进来啊。Why not?PP点直接加带。这里面不是要一个input stream吗?是吧,是不是叫input stream吗?好,我换一种方式,之前的方式,咱们是不是一直往虚拟机里去读啊。什么什么class class load之类的,那这块呢,可以这样。Fair input。TH。RC目录下有个叫DB.pro。有问题没?
14:00
你看这个玩这个穿看啊。好。这句话你看这个漏里边是不是叫input stream,而我这个东西鼠标放上来返回的诶。是不是啥。叫fair STEM是,那fair input stream是不是input stream的一个子类啊?所以说也没问题啊,没问题。对吧。什么是多肽来着?这不是多肽吗?对吧,这块正常来说是不是应该放父类类型啊,但是我真实存的是传的是什么,是不是传的是个子类啊。是不是叫理事替换原则吧,对吧?哎,就是什么叫理事替换,有印象吗?讲多态的时候说过吗?就是你爹不是你爹,应该你爹出面的场合,你当儿子的现在呢,也能出也能出,出出面了就叫理事替换。
15:02
这块不说了吗?正常来说接的是啥呀,不是input。Stream是个负类接口吧,但是现在你他要求是放负类接口,但是咱们放的是个什么呀。子类的是吧,放的是个子类的没问题,整个程序呢,不受影响,这个叫理事替换原则啊。好了,这样的话呢,我会把这个PP对象,也就是说把这个文件里边呢,写上注释啊。将配置文件中的全部数据。读取大皮皮对象中。没问题吧?是P对象中,就是那个咱们这个文件里边的全部的数据。都放在PP这个里边了啊,都放PPT里边了,好了来。那咱们的朱莉数据源啊,是可以这么去构建的啊,叫朱莉。哎,我去。
16:02
Judy。呃,有一个叫做数据源工厂。啊,猪的数据源头工厂。讲过工厂模式吧?工厂模式,那工厂的目的是什么呀?创建一个对象回来是吧。好的,来,那我现在搞这个工厂的目的就是第二。一个数据源看到了吗?两个参,两个方法一样的名,但是参数不一样,第一个接收的是一个map类型,第二个接收的是不是就是property啊。我这个property是不是就是咱这PP啊,所以呢,里边扔谁。PP,好,没问题吧,设备。好点错了啊,这样的话呢,他就通过。PP。创造了一个数据源。整个这句话先给它串开上啊。
17:01
什么鬼?啊,有有这个这个顶级的是吗。嗯,我不想要这样定级啊,我希望给他添加到。啊,就是顶级的啊,删了吧,留顶级的。好,这样整个这个方法,你看这个方法名就能猜到它返回的什么值。创建数据源是吧,那他返回的是不是肯定是数据源啊,是不是一个的S。对吧。这个嫂子,谁的嫂子?是阿里巴巴的。OK,那我整个这个方法,整个这个方法的目的是不是就给这个DS赋值啊。对吧,所以这块de等于呗。行吗?那我只要调一下这个方法,数据源是不是就有值了。来吧。我这块直接是不是掉这个DS了。
18:00
但是掉这个GS之前干嘛。是不是得先调一下这个方法呀。来吧,我这个方法写的到底成不成啊,测一下。Subjects。New,一个DAO。下来。S一点。嗯,叫啥来着。这个get是吧,返回一个集合,返回一个集合。点。我还用什么接呀,我直接他不就是集合吗,是吧。System。点out。哎,咋写诶。是吧?没错吧,那行吧。没问题吧?OK。
19:00
啊,这这个不是目的啊。这个代码很重要,重要什么,你看我的这块这个这边。对呀。多简单。是吧,他需要一个参数,一个参数读吗?不需要他这个方法,你看直接扔进,把整个PP对象直接往这里一扔,他就给你创造一个数据源,而我这边。恰好我就需要数据源。而且这块如果你用上这个数据源,我这个方法还会自动帮你关链接。棒棒的是吧。代码越来越少,功能越来越强。啊,使用数据源就这样。
我来说两句