00:00
好,接下来呢,我们来说一下我们马贝蒂中对存储过程调用的支持,那么这个存储过程呢,我们在开发中也经常会写到,它是很多SQL语句的一个集合,那么呢,我们存储过程作为整个SQL语句的集合,我们数据库啊会把它编译一次保存起来以后呢啊,只要执行了再次调用就行了,这个存储过程呢,我们经常常见于一些比较复杂的业务逻辑里边啊,这一次操作要操作非常多的这个数据库,我们把它呢就操作啊。把它这些circle集合写成一个存储过程以后呢,我们进行复杂逻辑操作的时候,直接调用这个存储过程啊,就会非常方便,那么呢,我们也以咱们一个简单的存储过程为例,这简单存储过程写法啊,我们就不说了,我们以orac口中咱们只有非常复杂的,再带上游标处理为例来,我们呢,模拟上这么一个业务逻辑。
01:05
Test,我们现在呢,没有一个复杂的业务逻辑,我们就来模拟一下,包口中呢有一个复杂的操作,就是分页操作。Or口中的这个封页还是比较复杂的,它需要呢,借助,借助,借助咱们这个rule number,哎,借助这个rule number,不像是我们买circle中一个limit就完事了,它要借助这个road number,而number的原理是什么呢?啊,这个row number就叫横号。每一条记录,哎,每一条数据都有一个行号,一号一,第一行,第二行,第三行,第四行,第五行等等这些我们查询的时候呢,哎,我们就是利用行号,比如我要一到五条记录,那么这个行号呢,就大于等于一,小于等于五,哎,我们是这么写的,但是如果你直接拿行号大于等于一,小于等于五,这是不行的,因为它一旦按照行号一查询出一条记录以后,比如说你查了一个大于等于一,那么它这个行号查出来的数据,那么行号就有可能会发生变化,所以说呢,我们借助行号查询,哎,我们会需要一个子查询,我们这个子查询呢,比如我先查出咱们这个小于等于五的所有行母,哎,把这一堆数据拿出来以后,在这一堆数据里边再找到大于等于一的所。
02:40
导有行,这样的话呢,我们这一块就会有固定内容,不然的话你哎你先查出一些内容,哎,你如果直接写一个大于等于一,小于等于五,哎这就完蛋了,所以说呢,我们这个行号要借助行号查询,还得需要一个查询,所以说呢,这个就比较麻烦,这个麻烦的话呢,我们把整个orac口分页,我们就用存储过程啊,我们存储过程包装咱们这个分页逻辑好,这样的话呢,我们来创建一个Java be,哎,这个Java be呢,我们就对应我们分页的这个扎宾好,分页里边要用的数据我们都写上,比如private in,我们开始的啊,行号从第几行开始,还有咱们这个private in,哎,第几行结束,以及呢,咱们这个总记录数有多少,我们分页查询总要拿出总记录数,以及我们查出的所有数据。哎,我们。
03:40
以查employee对象为例,好,以PS get set方法,我们给它写出来。走这一块呢,这个扎币就是封装我们orac口封叶查询数据的,哎,封装咱们这个封装咱们这个封装封页查询数据,好这样的话呢,我们这个封页查询数据,这样封装就出来了,我们在Oracle啊,我们查询的时候呢,我们定义一个查询方法,把配置对象传进去,Start跟end,我们呢,传过来我要第几行到第几行,一到五行我们传进来这个count呢,哎,我们也这个count呢,总记录数应该是存储过程查,查询出来以后交给我们,包括这个查出来的数据也是从存储过程中查出来以后交给我们,好那接下来呢,我们来就写一个Oracle中对应的这个分页的存储过程。
04:45
好,123456,因为我们这个现在我们要分页查询,我们相当于得有两条查询语句,第一条统计我们咱们这个总记录数,第二条查出我们这个员工,然后把这个员工返回给马贝蒂斯,让马贝蒂斯进行封装好。
05:10
我们来要创建一个存储过程,来完成咱们这个分页,我们进入咱们这个编辑模式,好,我们来创建这个存储过程呢,Create create or replace,我们来创建或者呢,替换一个已有的存储过程,存储过程我们要创建一个procedure,哎,Procedure。Proc,好,我们创建一个存储过程,存储过程的名字呢,比如我们起名就叫hello test,然后呢,存储过程里边要传的参数,我们得在这也定义行,比如呢,我们传一个P-start,哎,我们这个开始的记录数,这个呢是作为传进来的参数,哎,In,然后呢,它是一个int类型,比如我们P-N。来这也是我们传进来的参数,它是作为一个in特类型,还有一个P-count count,这个count呢总计录数,这个是应需要我们存储过程输出出去的数数据,哎我们就来写一个out,它也是一个一接下来我们这peps,哎我们这个emps呢,就是查到的所有员工,这所有员工我们应该存储过程查到以后输出出去,所以说呢,这个它是作为一个outt输出参数,哎,它呢是一个,哎这个呢,应该是一个我们这个邮邮标呢,我们比如P-emps,它是一个邮标,哎输出输出的话呢,Oracle中有一个叫system的这个reference。
06:50
来这是一个系统的游标,然后呢,这个游标我们就能输出出去,好接下来我们继续。
07:03
好,整个存储过程的参数,我们定义完这个存储过程的方法名以及参数,接下来呢,来看呢案子,咱们这个备针,我们来写一个开始,好开始呢,我们先来查出总记录数select count7,哎,比如呢,我们来查一下总计录数是不?哎,把这个总计数入数呢,查出来的数据,哎,Into交给我们,P-count,哎,交给他,然后呢,这时我们要查总记录数from咱们,哎,我们叫Oracle中有一个employees这张表。好,这是我们第一个查询,第二个查询相当于我们要查询出所有员工,所以说呢,接下来我们就是open,我们打开咱们这个油标。诶,这是我们这个邮标的定义,那for为我们这个查询语语句打开游标,哎,我们这个查询语句呢,就是select,其from,本来呢,From我们employees这张表,但是呢,如果是这么长,我们没有分页功能的,我们要加上分页功能,这样的话呢,就比较复杂了,我们来看orac口中的分页,首先呢,我们查出的数据,哎,我们来看啊,有好多的记录数,我们查出的数据呢,我要一到五行记录,首先我们应该把啊,Road number小于五的数据检索出来,在这个数据作为一个子查询的结果集,在这个结果集里边再拿出行号大于一的,大于等于一的数据,好,我们就来看这个查询呢,就应该写成这样,S select。
08:46
来是from我们这个employees表啊,来from这张表的时候呢,哎,我们需要的是。Where,它的这个number where where,它的这个。
09:02
Number number呢,要啊,比如小于等于我们传进来的平的值啊,就是它,但是这个number子查询出来的数据,Row number的新的值要在外界还能用,所以说呢,我们把这些那得起变名row number,比如呢,我们就叫RN来我们这个仪表的所有employees就是仪表的所有,好,接下来呢,我们这个role number在外边就能用到了,哎,接下来where就是where,我们这个road number。哎,又大于等于我们给定的start,好,Orac口中的分页就需要这么来做,这么来做的话呢,是一个比较复杂的,接下来我们来end,整个存储过程定义完以后,一个end结束。等等,咱们这个测试过程,好来把它编译一下走诶有点错误,我们来看一下啊,这一块这些SQL语句应该没问题,这是存储过程名,好小括号参数列表哦,这多了一个小括号,我们把它删掉好点确定走好创建出来了,我们也可以使用这个select from,有一个叫user source。
10:26
那使用它来查出我们这个存储过程来,我们这个hello test存储过程的内容也在这儿都有,我们这个存储过程就创建好了,那接下来用马贝蒂斯调用一下这个存储过程,完成分页功能。
我来说两句