00:00
诶,下边咱们就以这个select by example为例哈,咱们来测试一下这个POC查询,嗯,咱们先设定一个目标,我们希望这个查询,呃,搜控语句里边的这个word句哈,它给我们生成这样的大概是这样的一个效果,嗯,就是它整个呢,大的结构呢,是用二连起来的两个括号,然后呢,在这个括号里边呢,是两个and,呃是分别是and连起来的两个常用条件,这个and连什么查询条件呢?一个呢是我们去看这个emp salary哎,我们让它呢去大于哎一个值,然后呢延PH值去小于一个值,然后呢。
01:00
它呢去小于一个值,并且呢,位置呢是大于一五值,我们这么设置哈,这个其实查数据库呢,它未必能够有匹配的数据哈,但是我们只要看到它生成呢,呃,我们想要的这个结构的搜狗语句就好了,我们看一下啊,这个时候这种这种操作我们用QBC查询怎么样来做第一部分呢,我们先去创建这个example对像,用一个example我们会发现哈,它需要我们去传一个,至少需要去传一个试题类的class对象,我们这儿呢,就得需要去传这个employ class得到example。然后呢,下一步呢,我们通过一个example对象,我们去创建这个criteria这个对象,Criteria对象呢,其实我们需要两个,所以说呢,在这儿我们分这个零一和零二。
02:14
创建了两个,然后呢,下一步第三个啊,我们在两个cri中。这个两个criteria对象中分别设置,哎查询条件,你看一个呢,让它去包含这一部分,另外一个包含这一部分啊呃,Criteria一点,呃是大于a greater than是吧?那么我们这个时候呢,用这个方法我们发现它需要传两个值,一个是property,一个是value,这个property呢是我们实体类的属性名,实体类的属性名这个value参数哈,那就是实体类的属性值。
03:14
你看我们最后想生成一个查询条件呢,你得有这个字段名和字段值,对应到我们Java实体类来说呢,就是属性名和属性值,那么我们工资的话呢。我把这个窗口调整一下。你看啊,EP salary,它作为我们Java的属性名的话,那就是这个EP salary,然后呢,它的值哈,值呢,比如说大于呃3000。嗯,然后呢,它后边又跟上一个年龄小于一个值,那么我们说哈,你这个and greater than这个方法,我们看到它返回的还是criteria这样一个对象,这有点看不清啊,还是criteria这个对象,那也就是说呢,这种方法啊,它其实是支持连缀的,你可以直接连着这么写,哎,小鱼呢,是less than。
04:20
EPH,它小于呢,比如说你不到25岁就已经挣到一个月3000块钱了,这是一个查询啊,诶然后呢,Criteria这个零二呢,我们法制。嗯,那么一样呢,是我们MP salary,然后呢,它是小于哈,诶然后呢,是说你这个年龄呢,都已经这个在不到,呃在大于30岁,你大于30岁,你的工资呢,还不到5000块钱啊就这个意思,这样的话呢,我们是创建好了两个criteria这个对象,也就相当于查询条件里边呢,这两个括号里边的哈,我们已经有了下一步要做的事呢,是用or呢去把它们给连起来。
05:20
怎么用二给它们连起来呢,使用这个二关键字组装两个criteria一下,呃,这个这个or关键字的使用哈,我们正常来说呢,我们会这么去想啊,比如说CRITERIA01呢,调一个二哈,呃看看呢,给他去往里边去,能不能传另外一个criteria,他没有这样的方法。所以说呢,这个还不是这么干,这个呢是拿这个example对象啊,去调一个二,这个方法里边呢,把CRITERIA0二传进去,这个设计吧,怎么看都觉得有点别扭啊,你就好像呢,是example现在代表CRITERIA01似的啊呃,用example呢去叫二方法把CRITER02给传进去,这个呢,怎么看都觉得比较别扭哈,但是它就是这么设计的,嗯,把这个设计好了以后呢,下一步我们就可以这个执行查询,这个执行查询呢,我们employee设是点。
06:31
嗯,Get employee list把example,把example对象传进来,然后呢,它返回多个,我们给它放到list的集合里边,Ctrl shift o,然后呢,去建一下这个方法,我们先把后边的写完吧,打印一下。我这个。
07:05
呃,到这其实就简单了啊,它就是直接去掉方法就好了,好下边咱们跑一下试试哈,这个真的不一定有没有数据哈,咱们也没有详细的去看,关键我们看搜QL语句,它生成的是对的就可以了,你还真有哈。哎,还真有这么一条数据,那他年龄是38,哎,然后呢,是这个工资是是这个数啊,他满足的是哪个条件呀。嗯。年龄小于。嗯,年龄大于30,但是工资呢是大于5000,哎,我看看啊。好,我这儿是写错了哈,呃,工资呢应该是小于,工资是应该是小于,所以在这儿的话应该是less,我们调整一下哈,这么一整的话呢,我们就真的不一定有没有这个这个数据了哈。
08:04
刚才我们是代码,这写的有点不对。诶,你看这时候还真的就没有这个符合条件的数据哈,主要我们也不看数据,主要我们看的是词汇语句,词库语句呢,主要我们还是看这个where子句这部分,哎,你看呢,这个,呃,这是我们第一个criteria对象,这是我们第二个criteria对象,他们两个呢,用这个二词句呢给连起来了,二关键字给连起来了啊然后这边呢,是我们传入的参数啊,这个地方是返回的记录的数列数量。哎,所以说这个时候呢,相当于哈,你看如果没有QBC查询呢,我们得自己呢,通过拼字串呀,或者说是什么别的方式哈,去拼凑这个查询条件,这个呢,拼字符串还是很容易错的,但是呢,我们通过Java程序的方式呢,来解决这个问题的话。这个就高度的模块化,就不容易出错,而且呢,更符合我们对Java的操作的习惯啊,所以说这个时候呢,其实用起来还是比较顺手的啊,当然这个地方有一点小小的别扭呢,这个无伤大雅是吧。
我来说两句