00:00
我们继续呢来讲一下动态cycle,先讲第一个标签,第一个标签呢是A。啊if我们这里呢,要做的是一个查询,我准备呢查询的是姓名和这个年龄,但是呢,我这个姓名的值啊和。年龄值可能没有。它有值的时候,我要包括常条件内和A值,如果没值的时候呢,条件我就不包含,那怎么控制在外中它有这个内条件或者没有这个A的条件呢?就通过我们的A标签来进行一个判断,当我们的T中它的判断为真实,我们会把这条三轨堆加到上面的这个主塞Q之后。那如果你的test判断为假的话,这个cycle就没有,就不加进来,这是test的一个应用。
01:00
我们通过例子呢来实现一个A的使用。这是我们的零六找到接口。在接口中我们定义第一个方法,它的返回值是例子的结合,Select student if。参这块是一个对象,Student在用动态cle时,参数这块呢要使用Java对象啊,动态C我们要使用Java对象作为参数。拷贝方法的名称,打开你的麦文件,第一个是A。Is select idive come,北京power note主漫下面的student好做查询语句select星号与ID吧,Name你们都写上from student,然后where条件。
02:08
啊,那我们把这一部分叫做主CQ,叫做主C啊主CQ现在判断条件a text。在这里怎么写呢?我们用的是参数中的这个属性的名字。来代表属性值作为判断条件。啊,那在这里呢,我们这么做啊,诶。Test在这里边我们要用的是使用。参数加我这个对象的属性值作为判断条件啊条件那么这块写的时候就是属性名什么什么值就行了。
03:06
它语法规则就是语法就是属性名等于某某值,这样就可以了啊,当然不等于也行啊。那这样我们来判断判断是name属性,这个name是参数,这个student对象的属性名呢。你这不叫name吗?判断它的值说内如果不等于空,然后并且name不等于空,字符串好,这是你的判断不为空啊。不等于空话。啊,这是不等于,那不等于空串,这个情况下就说明name有值啊,Name有值的话,那我就加上说name等于name属性。这种方式。
04:00
就是我们引用值吗,井号。包括哈,这里边是Java对象的属性名吗?当我们的name不等于空有着的情况下,我们就把这条语句加到后面的这个,加到这个C口语的后面这一个判断接下来。我们再来判断一下这个H,如果A的属性值大于零,增加一个条件and a。那么这块呢,写一个大于吧。他age,那当然这个age也是student对象的属性。好,这就完事了。那现在。如果说我们的name有至于,那么name会加在这个外的后面。那如果A大于零,那会把这个条件也加在这个后面,它组成一个完整的CQ语句,完整的CQ,那这个为什么要加个an的呢?因为你要保证当这个条件程序力的时候,它要连接上这个条件中间是不是得有一个连接符号啊。
05:16
And或者or啊,所以这块你需要有个and,你得保证最后的塞口语句是合法的才行。这写完了,测试一下。打开我们的测试类。这个是测试的是F。S啊。DL调用S参数呢,是一个对象返回值是一个list的集合,Student创建一个student new,一个student that name name呢,比方说是这个李四同学四题在赛特A,这是20。
06:05
把它作为参数传入给方法便利我们的对象。那students students a。测试这个方法。我们看最终的结果啊。那下来我们看现在这个Y宇宙中,条件是不是两个name等于某某值,A是不是大于某某值啊?李四传进来了,说清明等于李四的年龄大于20的结果是没有。那确实没有吗?看一下库里边。内幕是李四的。好看啊,Name是李四的年龄是大于20的,它是等于20啊,那我们把它换一下,换一个。
07:10
换个年龄不就完事了吗,我这换一个18。好,这样可以吧。来执行我们的测试。啊。我们看结果是。姓名是李四的病,年龄是大于18的,是八的。一条记录,李四的年龄呢,也大于18,这样就是符合条件了呗,好。现在这个查询呢,符合结果就一条技术太少了,我给它变换一下条件,按照这块呢,换一个号换一个哦,那这样的话呢,结果就能多一些了。再来做一下测试。找的是李四的,或者年龄大于18的,那记住结果呢,有好多啊,这些都是啊,这些都是好了。
08:03
现在的条件是两个都满足,既有我们的name,又有H当在执行我们的这个。Is调用的过程中呢,它是这样做的,参数是个student吗?它有李四,有age在map文件中,那么这个name它现在只是李四啊。它肯定不是空,也不是空字符串二嘛,所以这个条件是符合的,那么就会把name等于里四加到这。加到这个位置上。那最终的结果就变成的就是这呗,那么等于李四。那我们的代码呢,再往下走,走到这个F的时候,它一看A48大于零啊,符合条件,那么会把这条语句也加在半的后面,那就加上了我们的这一部分在这。
09:01
H大于18,这就是F的一个使用。那如果你的程序中现在出现下面的情况,我们再来看。现在这种方式呢,它是2000都满足,注释一下。然后我们再来一个,再来一个,谁呢?是年,这个姓名有值,但是我们的年龄没值,那这样做的话,那就是我们乘以中。条形从上往下走,当走这的时候,这个条件是不是有,这个是不是就没有了,因为只有一个符合嘛。来执行一下,看看效果。看最终的条件。我们看是不是只有一个。Where name等于李四呀,就一条没问题啊。这是一种情况,那如果现在呢,我们这个姓名这块他没有。
10:03
年龄,这我写个20,当这样的值传入给我的map的时候,那应该它值形式从上往下。首先判断name,因为name是个空,所以这个条件没有。在这。它会把这句话加到玩的后面,会造成什么呢?会造成语法错误,因为多了一个O。看一下我们的测试。他应该报错。报错原因就是你的语法有错误,你看这不就是语法有错误吗?说你有一个语法有错误。语法错误,就因为你拼接语是这样的,看到了吗?哦,是大于,你看这就有问题了吧,这造成呢,当你的条件。在有些情况不满足情况下,会导致你的Co有问题。
11:01
那怎么解决这样的问题呢?我们用一个小技巧,在Y后面这我写一个一等于一啊,或者你随便写一个满足的小A,比如说ID大于零,这样都可以啊,总之就是你给它加上这么一个条件,这个条件并不影响你下面的这些条件。因为在我们数据库中,ID它都是大于零的嘛,没有负数嘛,包括你说E等于一一等于一,这也是一个恒等条件,也就是说这个条件不管有和没有,对下面查询没影响嘛,好,这一等于一啊,或者用ID大于零。加它是什么目的?就是说当我们上面前不满足时,如果只有这个条件满足。它加上了之后,这个语法规则是正确的吧,就是这么一个目的。
12:00
因为在if中单独用它可能会造成语法的缺失。来,再乘一个。这回呢,就应该没问题了,来看吧。我们看ID大于零,或者是你的年龄这个大于某某值大于是20,这样的话就拿到我们这个结果了,这就是说我们的F能够进行条件判断,但是呢,它有一定的。缺陷。当条件有些不满足时,它可能造成你的语句是语法错误的,所以这我们加上这么一个条件,这个条件加的呢,实际上有点多余啊,有点多余,意义并不是那么太大。If单独用会有这样的问题,那我们结合着另一个标签可以解决if这个问题,这就是下面这个标签叫做where,那就这个这个where呢,能够解决刚才那个if标签的不足的,下面来看一下where。
我来说两句