00:02
好,来接下来我们具体来说一下这个事啊,那如果说我们现在想去把这个事物啊,相关的东西给大家演示出来,并且啊给大家把这个效果呢呢都让你们看到啊,那么我们就要去诶用到一个具体的一个案例来去做好,现在的话,我有这样的一个需求,我们先把这个需求呢,简单给大家去分析分析,呃,这个需求是这个样子的啊,我们有一个service层,有一个DAO层,看到了吧,那么他们两个关系呢,就是service,将来是要去调用我们的DAO的这个分成大家还记得吧,还记不记得记得吧,就是我们的,来再来说一下啊,就是我们的基本上就是什么呀,DAO,然后呢,Service这个就是我们的controller,对吧,将来肯定是service去调用这个DAO的啊好,那么这个功能是怎么做的呢?大家注意这是一个这个有点看不清楚啊,大家来,呃,听我讲就行了啊,啊,这是一个书成的一个项目啊,我们就是把这个Java e。
01:02
但是他所做的那个书城项目那个需求呢,给他拿过来了,呃,Do里面呢,有这么几个方法,就是通过书号去找一个书的价格,然后呢,第二个方法是更新一下书的库存,第三个呢,就是更新一下用户的一个余额,啊总共呢就这三个方法,那么其实这三个方法呢,就是我们在购买一本书,我们需要做出的操作,大家来讲,比如说我在你的这个页面中挑选好了一本书,那么这本书首先呢,我要根据书的ID值去找到这本书卖多少钱。明白了吧,知道了卖多少钱以后呢,因为我要买这本书了,那么我们就要把这本书它的库存去减上个一,就相当于卖了一本了,然后对应着呢,我们要把谁买的这本书,把它的余额减去书的价格。能听懂了吧,也就意味着我们买一本书需要经过这么几步操作,而我们麦里面呢,就是真正的一个买一本书的一个方法,好那么这个方法的话,将来我们就可以什么直接去调用我们的这三个方法,就能完成一个购买书的一个操作。
02:16
这个需求现在能明白了吗?可以吧,OK,那么接下来我们就把这个需求先给它设计出来,呃,下面提供给大家呢,就是诶,我们的三个表啊,然后在这三个表里面的话呢,这个地方我加上了这个check约束啊,这个我们可以把它去掉,为什么去掉啊,不好使吗?对吧?满生活里面check约束是不好使啊,检查约束不好使嘛,对吧?所以你把它去掉啊,OK,来吧,呃,那因为以前的话呢,我们可能会在这个orac库里面去演示啊,现在的话我们就没有这个东西了,呃,直接把它去掉就行了啊,然后简单看一下这三个表,第一个表就是我们的book表,然后呢,里面有一个书号,有一个书的名字,还有一个书的价格,第二个表呢,就是书的库存表,就是哪本书还有多少库存,第三个表就是用户的余额表,每个人还剩多少钱,很简单的三个表啊,那么我们就基于这三个表来去做一些操作啊,那么首先我先把这三个表呢给他。
03:16
拷贝出来,我们把这个表现创建出来,好,还是在我们这个库下面啊,我们来把它创建一下来选中。好,选中以后呢,我们来执行一下。有个问题是吧,看看哪个地方写错啊,这个多了啊,这个逗号的去掉啊,因为我删掉点东西啊,把它去掉,呃,那我们看一下这里面应该有一些表了啊。刷新一下啊,这个不表是不是已经有了,对吧,那我们就把这个下面这两个表创建一下啊,来创建一下。好,创建出来了,创建出来以后呢,我们把每个表里面呢,插入几条数据啊,来打开表,呃,这个数据的话,你可以去下面去选啊,然后呢,我就不在下面选了,我就直接在这地方插,插入几个就行了啊比如说我们来插入这个1001啊这一本书啊,叫什么名字呀?啊叫这个Java编程思想是吧?看过这本书没?啊,能看懂吗?能看懂吗?啊不好看懂是吧?啊以后你可以看看这本书啊好,再来一本书吧,1002啊还得看什么书啊。
04:34
以后我们必须得看一本书啊,叫什么呀,叫活着是吧?啊,什么颈椎病康复指南那都是小事是吧?啊,你得先保证你能活着是吧?OK,来保存一下啊,那么这是两本书啊,分别呢,卖100块钱,卖70块钱,看到了吧,好,然后呢,我们再来刷新一下。
05:00
呃,在这个库存表里面的话,比如说呃,1001这一本书还剩多少本啊,还剩十本啊,1002呢,我们也还是剩十本好,他也还是剩十本好,把这个十写到这OK,然后呢,下一个,呃,这个用户表啊,就是我们的account这个表,那我们就写上一个人吧,比如说Tom这个人好,还剩多少钱呀,还剩300块钱保存一下。看到了吧,这个表动数据也都明确了吧,OK,明确以后的话呢,这个还比较好办啊,然后接下来呢,我们需要把我刚刚看到的这个需求呢,给它设计出来,我们就需要有一个有两个接口,有两个具体的时项类啊,我们先把这个给它写出来,来回到开发工具中啊,这个呢,比较费一点时间啊,我慢慢的把它写一写,首先呢,我们去用一个package,好,Spring,我们讲的是TX,然后现在我们讲这个,呃,事物的我们的基于啊,好,还是我们的注解的方式来讲,然后呢,先讲注解的注解讲完以后呢,再来教会大家如何使用XM的方式进行配置啊,来finish,好,在这里面的话,我们就先去写上一个接口,这个接口就是我们的book shop eo,好,这是我们的接口,然后这里面的话,我们有三个方法,第一个方法就是什么,根据书号。
06:31
好,查询什么呀,书的价格我们来查一下啊,就是呃,Public,我们查一个价格,就是什么find price by,书号ISBN啊,就是我们书号,然后呢,你必须要传一个书号进来,能看到了吧,第二个方法就是更新啊,更新什么书的库存,那么更新库存的话呢,就是word方法就行了啊,就是update stock啊库存,然后呢,你告诉我你要更新哪一本书的库存好,再一个方法就是什么更新诶用户的余额余额啊,Public word,比如说update啊,User account,就是他的什么呀,账户表啊。
07:20
然后呢,这里面你得告诉我你要更新哪个人的,并且呢啊余额你要更新,你要减多少钱,就是什么,把这个书的价格也给他传过来,能看明白吗?好,那么这个的话就你到这里面去对应一下就行了啊就是呃,对应的这个去写就可以了,听懂了吧?啊对应的这个写就行了啊。OK,那那把这个写好以后呢,我们就来去写一个具体的时三类,那我就还是写到嗯,这样吧,我们把它分开来写哈,我们去用一个。啊,把这个改一下吧,啊,改个名字啊,把包改个名字点叫做DAO,然后呢吧,诶DAO下面有这样的一个那啊接口再去写一个class,就叫做什么呀,Book shopp DAO info,然后呢,让他去实现我们的book和shop DAO啊呃,这里面呢有三个方法,我们把这三个方法呢,迅速的给他去写一写啊然后呢,呃,这个因为要操作数据库,所以说呢,我们就可以直接去使用我们。
08:30
JDV诶这怎么把什么给删了啊,把它给删了是吧?好我们就可以直接使用我们刚刚讲过的一个JDVC他age啊啊那么其实我们首先应该有一个配置文件了啊,那我们把这个配置文件呢,也来写一下吧,我就把这个JDBC的这个配置文件呢,拷贝出来一个啊,因为跟它里面的东西差不多的啊spring加TX讲长描啊,这里面我们首先得保证什么呀,将来你去帮我去做这个扫描,扫描谁呢?就扫描point.tx点什么呀,Not是不是扫描这个包就行了,对吧,因为将来在我这个lo这个包下面呢,我还有DA,我还有service,所以说呢,我们直接扫到这个包就行了啊,它里面的话呢,我们配置数据源,配置我们的JDB的table,你看这些工作呢,我们就不再去做了,听懂了吧,好,把这个配好以后呢,那么在我们的这个DAO上面,我们就可直接加上一个PY这个注解,在它里面呢,我们就可以定义出来我们刚刚讲过的GDBC。
09:30
Table啊,把它定义出来,J d bc tablet,然后懂吧,然后呢,把这个at or tobe给它什么写到这,这样是不是把它注入进来了,能看懂了吧?OK,注入进来以后呢,接下来我们就来去写这个具体的方法,首先根据一个书号来去查询书的价格,那么这是一个查询,那我们就写个搜后L语句,好,Select价格我们来看表啊,从哪个表查呀,从你的book表来去查,我去查价格,看到了吧,查价格啊,那就是select price,好,From我们的book表,V is dn等于一个问号,这样是不是行了对吧?那我们来写一写啊,怎么写呢?JD bc complete呀,查询单个值吧,这个是que for object来我们得有个参数,所以说我们用的是诶这个方法,搜高语句传进去,最后呢,返回的是一个。
10:30
好A这这2CLASS,然后你传的参数是谁呢?就是我们的ISBN能不能看得懂,可以了吧,能看到吗?这个你看吧,把你的这个书号传到这嘛,然后呢,最终呢,查回来以后给我返回成一个A这类型的嘛,是吧,那么这个地方我直接直接就原称是不是可以了,这个方法是不是写好了对吧?来接着往后写下一个更新书的库存,那么其实更新库存的话呢,我们不能直接去更新啊,我们首先来做一个判断,就是什么呀,判断库存是否足够,假如说库存不够的时候,你能不能去更新啊。
11:09
能不能更新啊,不行啊,所以说我们必须得判断库存是否足够,那么A此呢,首先我们要去查询库存啊,就是select这一个叫什么表啊,Bookto表,我们去查这个to啊,好,From我们的bookto这个表,Will ISBN也是等于一个外号。好吧,那么这个我们还是它的这个库存,比如说啊,这类型的stop等于什么呀,等于gd bc complete,然query for object是不是还差一单个值啊,好,大家都跟上啊,For object查回来呢,还是一个点,哎,Class把你的谁传进去啊,S sbo传进去,那么我们来判断,如果说哎,你这个库存是什么的吧,小于等于零的,那说明怎么到了不能改了吧,没书了,卖不了了,对吧?那么这个时候因为我们主要去演示那个事物,事物的话,一般都是抛出异常以后要回滚了,所以说这个地方我们就模拟一个异常啊,那我就给他去抛出一个,哎,正常你抛出一个time就行了吧,对吧?那么你们在这个将来的程序设计里面的话呢,我们其实也可以怎么做呀,自己去定。
12:30
定义一些异常,你看啊,我现在给你定义一个异常,我们叫做not,讲exception,好把它定义出来,然后呢,这个里面的话呢,我们就是用上一个class,比如说库存不足,那就是呃,Book stock exception看到了吧,那这个自定义上怎么写啊,哎,继承谁time except,然后呢,然后呢,是不是给他一个构造器啊,对吧?来这个构造器你看了哈,我就简单一点,我通过负类里面呢,去生成这个构造器,你这里面有啥构造器,我这里面就有啥构造器啊来我们把它写一下,就是直接去点击这个来把它生成就行了,看懂了吧,大家说的应该是要这个吧,对对吧,那其实这个我除了这个之外呢,其他的都给你生成好了啊,都是可以的啊,那把这个写好以后,那么再。
13:30
这个位置我们就可以怎么做了呢?我去你有一个什么呀,叫做book stock exception好,这里面哎,我们就告他什么库存不足,那明白了吧,库存不足啊,那么假如说诶这个是没有问题的,那接下来我们就要改库存了吧,So,就是什么呀,Update bookto这个表site,你的to等于什么呀。
14:01
是不是减上个一就行了吧,对吧,那我就让我原来的stop减一个1V要什么呀?Is dn等于一个问号,这样是不是可以了然看到没能看明白这个搜后L语句吧?啊,然后的话我们就通过j dbc complete.update去操作一下,传一个搜QL语句,然后呢,传一个参数啊SQL语句呢,就是我们的这个SL语句,而参数呢就是我们的ISBN,那么这个方法我们就把它写好了。能明白吗?可以吧,好,那么下个方法其实跟这个是差不多的啊,我们也来写一写,首先呢,我们也是要去判断一下余额是否足够,你要说余额也不够,你能去买吗?不行啊,来判断一下so高语句我们要去查的是查哪个表啊,查我们的account这个表,查balance啊,就是select,来,我们来查一下,好,Balance from我们的account这个表,Where,谁呀,是不是user name等于一个外号啊,对不对,OK,那么这个的话也是啊,JBC2QUERY for object我们去查好,最后的话呢,你给我返回一个2CLASS,好,我们是没有小数的啊,说是直接使用int类型就可以,然后呢,返回的就是一个int类型的balance,就是我们的余额,那么我们来判断,如果说你的这个余额是。
15:29
小于谁的呀,是小于我的刚才的这个价格的。说明余额就不足了吧,对吧,那我同样给他抛出一个,哎,我们抛出一个什么异常啊,哎,自定义一个异常吧,你不要再抛出这个什么不tore exception了,是吧,就是库存不足嘛,你再去写一个什么呀,余额不足呗,好再来写一个异常,我们叫做什么呀,用户的account exception,然后呢,这里面的话呢,我们再去继承一下我们的long exception,好把它写到这,同样我也把它给它生成出来啊,来生成一下,好,那么这个地方的话,我们就可以要用一个用户的account except告诉他,哎,额不足了,看明白了吧,哎,余额不足OK,然后假如说这个是不满足的,那么我们就可以去改余额了啊,就是可以啊update。
16:31
什么表啊,Account表,Set balance等于什么呀?Balance减去个什么呀?是不是减去price呀?好,怎么写啊,减去一个呀,问号了吧,是不是?哎,减去一个问号,然后呢,V啊,User name,好等于一个问号,OK,那么这个我们来写一下,就是g bc table加update。
17:01
好,调哪个方法呢?调的还是这个方法,把你的soq语句传进去,来这个位置减谁呀,简直是用户名是谁呀,就是我们的user,这样是不是可以了,看懂了吗?能理解了吧?OK,那么这就是我们的DAO,哎,它里面的三个方法,我们就把它写好了。好,接下来我们再去写我们的啊。
我来说两句