00:00
然后本章的目标呢,是DA模式和连接池哈,还有一个D工具类。呃,这个没事儿,今天讲不完,明天再来一天啊。就得讲会这个东西必须得消化掉,这个东西不消化,消化掉呢,后期咱学起来就方便一点。因为咱们下个阶段是前端,在下个阶段呢,又回到Java,就开始学框架了,框架里边有很多的概念都产自于他们。哎,都产自于他们是吧,所以这个东西必须得搞透啊。首先呢,什么是DA模式?这个DAO模式务必搞清楚,因为以后呢,咱们在写项目的时候,经常会说到你的DAO写完了没,对吧,我的DAO写成什么什么样了。所以必须得搞清楚什么是DA模式。其实DA模式啊,说白了就是Java和数据库。
01:00
做打交道的这段代码,咱就叫模式。换句话说,GDBC就是DAO模式的一种表现形式。哎,DA模式的一种表现形式哈,那咱来看一看这个DAO3字母表现的到底是什么意思啊。DAO,看到了吧,三个字母,三个单词,它表示的叫数据存取对象。数据存取对象。好,还是不明白是吧,其实这个数据的存取对象看第二句话。它位于业务逻辑和持久化数据之间,这句话呢?我想了半天,还是放那儿吧,因为等以后明白的时候,你再看这句话就知道了。好,这句话暂时先不解释,往后看对持久化数据的访问。还是不太明白,来看这个图。这边是一个类。对吧。这边是表是表。
02:03
我如何把表中所有的数据?通过GBC代码。访问并且查询出来呢。就是说把这个表中所有的数据啊给查出来。你这么想?比如说我在这里边儿。看啊。来再建一个项目啊。嗯。再建一个吧,重新来一遍。帮大家理解一下S2啊。现在我建一个类了啊,我先瞎写了,测试学生。我现在就要封装一个方法,这个方法干什么,获得全部同学?学生的信息。好,这个方法应该怎么定义?Public void。
03:00
咱们就要get all,行吧,得到所有的学生。慢慢咱们一步步往下写哈,首先circle语句咱们已经确定好了,肯定就是。全部信息,那肯定是莱克星没跑了。是吧?好,然后别的代码呢,咱们暂时先不写。暂时先不写,那你看我调用这个方法的最终目的是什么?你先把这个搞定了,搞清楚。就是说我这个方法假设你写完了哈,我在这边,我调这个方法的目的是什么呢。是不是要得到所有学生的信息呀?记住了,我并不需要在这里边哪个我sit out出来。我不需要你给我打印,我只需要把这60多个人的信息给我拿过来。我要在这搞。所以这个方法注定要写。
04:00
是不是写返回值啊?我调用你这个方法的目的就是说,你看我给你五块钱的目的就是你要给我瓶水。是不是这意思啊,我调你方法的目的,你必须返回各个东西,但是现在问题来了。我这个表里边儿有62个人,我怎么返回62个人给你呢?比如这块我应该怎么写,之前咱们写什么返回in的,这不就返回个一返回二就行了,现在我是62个人啊。我这块应该怎么返回呢?有同学说,诶,这是这是Java的,不是数据库了哈,咱们可以返回一个数组吧。没问题吧,OK,可以的啊,返回一个数组。那这块怎么写?住左啥类型啊?啥类型?也就是说你啊,你看啊,一个数组。
05:02
In l。呃。就这样吧。你看啊,这个数组里边,里边装的是什么,你数组的类型是不是就是啥呀,你看我装一个110,装一个120。这个元素的in是不是int类型,所以数组的类型是不是就是int呀?没问题吧,而你现在看啊,我要返回这个数组了,而我这个数组里边装的是什么?是不是一个一个的人呢?类似于这个。这个什么类型,等会儿再说,这里边儿我要装。一个人。是不是这意思,是不是一个人一个人一个人啊。OK,那这个类型是不是就是一个人的类型啊,那咱们都知道咱们这个表是不是叫学生啊,你看我这么写着奥student什么,所以呢,我这里边儿应该放的是一个学生,一个学生,所以返回的类型是不是?
06:07
死的类型啊。对吧,Student类型。这里边一个学生一个学生行吧,好,这个数组我是不是知道是六的类型了。OK,那咱再来想。你学习数组之后,是不是又学习了,叫做集合容器啊?集合容器。比数组要优秀吧。为啥呀?最最最最简单的一个,我这个容集合容器,我的大小是不是像一个气球一样?你多我给你膨胀,少我给你缩回来,是不是,所以有了集合数组集合这个这个容器之后啊,这个数组是不是就很少用了。所以咱们应该用这块,应该用更优秀的。
07:00
List是吧?那list里边是不是得写泛型啊?换句话又返回来了,那历史里边这个泛型写什么,就看你里边装什么呗。说什么呀?是不是student呀。OK,这个杀了。好了,用一个这个集合吧。对吧。银包。没问题吧,好,最后返回的什么?你看你创造了一个集合,我最终返回这个集合是不是就好了。OK。那现在差什么事没解决了?差点被解决了,我没有student的,这个累是吗?好,那我鼠标拿上来给你创建一个,创建个死掉的类,咱叫什么包呢?这个包啊,我暂时先叫。这个单词等会儿你就知道啥意思了,好吧,我先要这个单词啊,好了,有这个类了。
08:04
这边呢,是不是也就完美不报错了。但是现在差什么呢?你这个student它里边写啥呀。写啥呀?其实你看我在这边,我拿到这个集合之后,我就写的假的啊,我得到这个集合了,我想在里边把每一个同学的学号都拿到。我是不是应该怎样。我需要循环这个集合呀。对吧。哎,我要遍历这个集合,然后这个集合里面的类型是不是student他。OK,那我想拿到里边的信息,我这块输出了是不得这个同学的。学号。对吧,这个同学的。姓名这个同学的。啥了,比如说什么这个这个电话对吧,这个同学的啥啥啥啥啥啥啥。
09:06
是不是这意思啊?OK,那你看,那我这个对象,也就是说这个类里边应该写什么,是不是应该为他声明学号,姓名,电话,以此类推啊,但是你再看这一个类中写上,比如说咱们是不是声明一个。词缀类型的。OK。是不是再来一个?名字呀。OK,我为什么要写?我为什么要写内蒙,正是因为我数据库里边。是不是有这样的列,有这样的列啊。OK,那接下来的过程就是说什么呢。我这个类中该写的成员字段,也就是你这个表中的是不是列呀。
10:08
是不是对应上啊。所以这个过程记录下来。该类。等价于等等于。对吧,Student类等等等于student表。OK,然后里面的。字段,也就是说成员变量是吧。成员变量。相等于啥?哎。没问题吧,好,那么这样的类,这样的类我们称之为叫做。写这个啊。实体类。我们称之为实体类,实体类什么叫实体类啊?
11:04
和数据库。表。一致的类。好,这个类看知道我怎么给他写出来了吧。这个怎么写出来的,你就看你这数据库里边什么表什么类。有什么样的表,你这块就要建出相应的什么样的类,然后这个表中有什么样的列,你这块就要写出相应的啥呀。乘员变量OK吧,好,那咱把这个写写全了啊。哎呀,后悔用这个表的。这太可怕了,这个列哈,哎呀,说到这就写什么改呗,咱大部分都是字符串类型啊。第二个是登录密码log in p WD。然后名称下一个是什么呀。性别和great ID性别这个是great ID great ID什么类型?
12:02
哎,这个是不是应该改成。好,再往后看,然后是电话地址是吧,电话phone。地址a as太啥了。出生日期和呃不date。和email。行吧。OK。那咱们这个成员变量都写在这儿了,咱们学Java SE的时候。是不是得进行封装啊?哎,所以呢,大家看我刚开始写的时候,是不是直接就写成私有的了。好,快捷键生成get赛用什么?Out shift s,然后这有一个。Get and sets是吧?OK off,完成。
13:00
行吧。搞定了。然后呢,我为了一会儿,因为我要查询全部嘛,我为了输出方便,所以在这块我直接给它生成一个什么呢,兔子瑞这个讲了吧。词的方法。来重写一下的哈,这块呢,我就叫写个汉语啊。行吧。我的去这太长了吧。既然选择了,就别后悔了,是吧?从四啊好了,这个类呢,写完了这个类怎么出来的,没问题吧,来。这边的。开始动手了,开始动手了,看着吧。集合有了,这有了,紧跟着干嘛?是不是开始正常的GDPC代码啊?OK,继承。一。然后这里边开始get。谁问好DB的有吗?没有创建一个。
14:01
工具包。好,这里边儿呢,我再把那个代码的写一遍啊。首先呢,封装。三个三个对象,这三个对象先写出来啊。这样啊,我告诉大家,其实啊,写这个DB类正常来说,记住。就是四。三。二。一。哎,4321表示的什么意思。四个。参数。什么参数?数据库参数。三了。操作对象。两个。方法一个。静态代码块。OK,我一说这432爷这写完之后,想象到这四都是什么东西了吧?一个个写啊,四个数据库参数分别为。Driver。
15:04
四个是吧。分别为URL。Name。PWD好了。啊,静态是吧。好吧。然后三个对象分别是什么来着?可。连接对象。特种兵对象。还有一个结果集对象result set。好吧。这个没有。OK,两个方法分别我先写方法名。第一个。或者连接方法。第二个什么方法?
16:02
OK。好一个代码块。是不是这4321啊。OK,那把这个换成代码吧,怎么换代码呢?先不来。首先拿上面那个写完了是吧。两个方法。第一个。class.driver。第二个con被赋值。Driver。Manager get。第一个URL name和。Check it。OK。再开。这都写过代码了啊,然后close这个。是不是得先判断啊。宽段。RS如果不是空的,则RS进行close。
17:00
对吧,还有那两个玩意儿。分别为。PS。对。PS。需要拆开啊。好了,最后一个定板块是今天咱们学的哈。今天学的首先呢,当前类第2CLASS。Get class loader。加二得到元。啊,这藏了个这玩意儿。哦,我这个文件名叫什么呢?一会儿我给它叫成con点。好吧,返回一个input input。Is。八。然后呢,Property这个对象是吧。
18:02
Proper。点的。Is,他需要才开始。挨个负责吧。Driver。等于PP点。A。分别为BCD。前面别忘改啊。URL。Na。PWD是吧。好了,这个DB类写完了啊,其实我这个这个配置文件没有哈,我把这个文件直接copy过来了啊。在这儿呢?这个呢,我就不写一遍了啊。好,然后呢,上面这个先暂时关了啊。然后这个东西有了吧,我读取的时候,我读取的是什么文件名啊,看一眼。
19:03
是不是叫肯呀?所以呢,我这个配置文件的名,我要给他改了。F2啊。这个。好了,还差什么?数据包是吧。对吧,驱动包填过来。好了,咱们的结构呢,已经搭完了,最后差一个什么了,开始写代码了。好了,连接已获得。接下来又该干嘛了?连接有了C点了。是吧?什么鬼?点儿。点不着是吗?也就是说点不着的话是不是引不到啊,引不到是DB类。你父亲不让你演啊?因为咋的。哎,没有,他是默认权限哈,好什么都不写的话,谁能引到这个对象啊。
20:05
自己不是。叫包内,同一个包是可以访问到的啊。好,那如果是继承关系中访问的话,应该用什么呀?其实public是一个毫无节操的权限。就是符。因为只要是public,不管你怎么着都能访问到。对吧。好,这个学过吧。啥意思?只有继承关系中才能访问得到。也就是说,你想访问我DB类中的con,好啊。叫爸爸。哎,叫爸爸你才能访问到。这样的话是不是比毫无节操那个玩意儿好用一点啊?哎,所以这块我用看。
21:03
行吧。然后这边大家看。能不能点出来了。没毛病吧?Repair statement。返回,哎呀,我去。返回。点执行查询is he。返回二。这个这个这个RS啊。OK,把他俩呢?开始循环。RS点。Next。对吧。好程序呢,现在我写到这儿了。程序现在写到这儿了,接下来是不是循环这个事儿啊,循环这个事儿是最痛苦的了。看着啊,你看我循环的话,我是不是要循环这里边儿,因为有60多个人吧,我是不是循环一次拿一个人啊。对吧。那拿到这一个人,我是不是应该把整个这一条,也就是说咱们现在循环的话。
22:06
这么看?什么鬼?也就是说我循环一次拿是不是一行数据。循环第二次拿第二行数据啊。那你看我拿到这一个值。我是不是应该给?存起来。看我怎么存的啊,也就是说我一共62个人,我循环一次是不是就一个人啊,那么我就这样。我先写假的啊,我循环一次创建一个学生。对吧,循环一次创建一个学生,然后呢,创建完这个学生呢,我要把它扔到。集合中别忘了啊,那大再来看啊,中间还没赋值呢,无所谓啊,现在你看循环一次是不是一个小白呀?
23:04
然后把这个小白是不是放在这个集合里边了。那你看整个这个循环完成就是60多次搞定了,那最终的这个集合里边是不是就是60多个凶啊。OK。那我是不是满足了我最终的这个需求啊,我最重要的是不是这个集合里边装60多个人。是不是这样的,但是现在是你装的是这个小白啊,就是说这个同学。他没有名字,没有性别,没有学号。紧跟着下一步,你是不是应该把数据库中看着啊,数据库中比如说盖死。一这是啥?学号吧,我是不是应该把这个学号给这个同学啊。这个同学点设置学号。为123,而这个123,我刚才怎么来的?
24:01
查出来的吧。哦。查出来的这个数据给了这个同学的学号。以此类推吧。咋的?第二列是什么呀?密码吧。那就是这个同学,我要设置你的密码了。哪了?这呢,老给你PWG好,那你这个密码哪来的?从结果集中get string第几列来的?第二列,OK。以此类推,所以我说这段最恶心,我得搞多少次啊。行啊,搞吧。设置这个这个这个啥了。名字。然后下一个设置什么了。姓名字完事了,名字完事应该是。性别。然后是。啊,年机是吧,在哪呢,这呢年机,然后呢电话是吧。
25:01
然后是。地址。然后是生日。类的。最后呢?邮箱。看到了。搞了这么一堆啊,然后挨个去拿纸吧。呃,这个名字是不是第三列了。名字是第三列,然后这个是第四列,这个是。第五列,注意啦,注意啦。啥类型?所以这个盖的什么。OK。接下来第六列,第七列,这都是字符串啊。点上六。七八。我的个天呐,这块。太恶心了是吧?但是呢,咱们这个功能写完了,最后返回啊,翻进来啊。
26:01
Finally。整个方法写完了。也就是说这个方法现在我给它折上。你只要调我这个方法,我就给你搞一个集合,集合里边全是学生。是吧,试一下啊。写个慢方法。调一下这个方法。你有一个test student student当前类,然后点这个方法。返回的一个集合,里边装的都是学生。是这个意思不?首先第一个测试,直接打印list.size。多少个?62,哎,看着了吗?62没问题是吧,好了便利他。便利,这个集合我还得打印。怎么便利啊?
27:01
所是吧。教大家一个。List点儿。跑一圈。里边写。System sys sys tm.out。冒号,冒号for line。好运行。有问题没?是不是变利兰了?哎,拉姆的表达式。了吗?就是一种简单的方式啊,就是一个简单的方式,就是输出集合中的每一个元素。
我来说两句