00:01
我们接下来就先来看第一个这个if的使用。这个顾名思义,这就是一个判断,那么这个判断的使用场景呢?来给它模拟出来。好,现在假设我们的需求是这样,查询员工还是咱们这个查询员工。查询员工的时候呢,我们原来只是按照ID什么查,现在呢,查询员工我的啊,我的咱们这个要求。携带了。哪个字段。咱们这个查询条件。酒带上。这个。字段的值。好,那么这样的话呢,我们来定义一个方法,在这。Public。啊,我们这个查员工让他返回多个。哎,有可能是返回多个好,然后呢,Get EPS。
01:01
啊获取EP啊八咱们这个condition。按照条件,但是呢,我们现在是来测试if。完了以后呢,因为查员工的这些属性都是employee对象中的,我就直接传employee对象。哎,我们在employ对象里边把查询条件带上。哎,我们这个要求就是,哎,查询携带了哪个字段。咱们只要查询条件,就拼上这个字段的值。好,我们来写这个方法的。实现。好在这定义。这个方法,这个方法,那我们的select标签查询好,这是方法名。我们的返回值是employee集合,所以说result type啊,返回值类型只需要写集合里边元素的类型employee。行了。过来把employee全利名拿到。
02:02
好。接下来我们继续。在这里边我们来测试select,我们写我们的查询from t。哎,我的要求呢,是YID等于你带来的ID,如果你还带了last name,那就并且last name。拉,哎,你带来的值。如果。如果你还带了email,按照我们这个email。等于我们带过来的email。哎,如果你带了真的,按咱们这个真的等于我们转过来的值。所以说,如果我们现在这么来写circle,这肯定是有问题的,我希望的是带了last name再带这个条件,我们last name如果为空,你这个条件就不要有了。
03:05
所以说呢,后边这些,哎,Where后边的这些所有东西,它不是一次性就写出来的,而是根据条件判断出来的。接下来我们就用这个if来完成后边的这些语句的拼装。好,若后边的这些东西啊,都不是直接写死的,我们是动态判断出来的,接下来就有第一个if。哎,这个F就是判断test里边,哎,编写判断条件。咱们这个判断。判断的,咱们这个表达式这个呢,跟我们写GSTLC。If的时候。CF里边的这个test用法是,呃,非常非常一样的,也就是说呢,我们GSTL里边这个test里边可以写EL表达式,但是呢,我们这一块判断表达式,它用的是OGNL表达式。
04:08
而这个OGNL表达式怎么使用,它和EL表达式都是表达式,哎,用起来都是嗯。简直就是一模一样的,但是呢,我们来看啊OGNL它有一些比较好的用法,大家可以来到。咱们这个网上来搜索我们这个OGNL,这是阿帕奇下的一个开源项目,好点开。这就是他的这个OGNL,那么进去呢,如怎么使用这块有一个简单的例子,你可以拿一个属啊,拿一取出一个值调用方法,还能取出它方法里边啊,比如返回的数组取索引,还能继续点它值,诶你看啊,能无限点下去。来往下继续往下翻,它的这个用法呢,哎,在最后这有OGNL啊,咱们这个,呃,表达式的这个用法。
05:04
所有的操作符,呃,这一块有非常多,大家可以进行一个判断,比如三元运算,哎,我们也见过按的啊,咱们这个货运算与运算等等,包括哎往下判断,哎包括咱们这些还能哎它还能调用静态方法,我们来看啊静态方法的调用,哎,以及咱们这个啊静态属性还能调咱们这个啊属性的方法等等。我们这个总结呢,在我们PPT里边也有,我们先来大概看一下,跟E表达式也一样,哎,对象点属性就能调出,属性还能调出啊,我们方法它还能调用方法,也能调用静态方法,静态属性,只不过呢,它是用ant咱们这个静态类的,咱们这个权利名加上咱们这个静态属性啊,At咱们这个权利名加他的这个静态方法都行。
06:00
包括还能调用构造器,哎,构造器你创建出对象,还能继续点它的属性,包括这些运算符以及逻辑运算符都支持,所以说呢,我们在这儿进行使用就行了。我们来看我们这个if test。好,OGNL表达式的使用。大家呢,就。参照我们PPT或者官方文档。参照咱们这PPT。或者官方文档。哎,和EL表达式用法是一样的,来我们来看啊,现在我想要的效果就是,如果ID这个值没带,那么呢,我们就不要凭这个条件。所以说呢,我们在这测试ID。不等于空。也就是说,ID不等于空,你带了的情况下,我才给你拼上ID。好。
07:00
这样来听,而这一块的ID这个判断里边取得值都是从参数里边取得,哎,大家注意啊,不是取得说哪一列,因为你传进来的只是参数里边的属性。所以说呢,从。参数中取值进行判断,哎,这一块的判断条件呢,比如说呢,你参数传过来的ID不等于空的情况下,我才给你拼上它,那其他也一样。你继续来写if。拉斯纳姆这一块的值呢,哎,这一块整个条件带上and,诶。我们啥时候有呢,我们是,诶你这个last name不等于空的情况下。Last name传过来的值不等于空,我给你带上,并且你不等于空,你也不能等于空串啊,我也不想给你查空串,And last name,那不等于,哎,咱们这个空白也就行了。
08:04
哎,有些同学说这个单引号,这是不是空白字符,跟双引号空串不一样吧,但是在OGNL中这个判断是可以的,它也是判断空串。如果你要写双引号,我们来看啊,这块双引号肯定就不行了,所以说呢,遇见特殊符号,我们应该去写转一。遇见。特殊符号。服务号应该。去写转义字符。哎,这些转音字符呢,我们是,呃,可以从W3SCHOOL这个文档里边查出来的,因为这个插麦也是我们这个标记语言好标记语言里咱们到HTL中这有HTMLISO8859杠幺,哎这一块有每一个特殊符号对应的这个实体名称,转义字符名称。
09:01
所以说呢,我们双引号,你就可以写and。也就是说,你。你觉得你不想写单引号了,你也可以这么来写,哎,这就是last name不等于双引号。包括这一块and,我们刚才是因为看官方文档里边,人家与操作的时候。哎,可以写双按的,也可以写一个and的英文字母,但是在我们插麦文档中,双按的我来写上。我们来写上啊,看一下,我来写一个and回。好,我们来写上,那写上以后看到这一块会有报错啊,报错说咱们这个and就会有问题,所以说呢,我们这一块双按也是特殊字符。你这一块呢,你就要写转义字符,哎,转移的话呢,在我们这一块查,那么就是它。就是说呢,我们也可以这么来写诶。都行,所以说呢,这块大家注意一下,接下来我们来看这个email,继续往下。
10:05
一面。Email。我们需要做到的效果就是,你email给我带了,我再来查,还是一样email。不等于空的条件下我再查。行,我不把它走。好,那么呢,我再加一个判断吧。并且。哎,Email给我截取出来,因为我们email传过来是一个字符串,你把这个email拿到,还能调用它的这个处理方法,哎,我们都来统一演示一下。1TRI以后呢,这就是你,哎会截取,我截取以后我判断它不等于你这个,哎双引号。不等于我们这个空白。哎,也行,我们也可以这么来操作,哎,调用方法这就是OGNL,好,接下来呢,真的也一样。测试。
11:00
哎,你带过来的真的必须是我合法规定的,因为我真的零表示女,一表示男,只带来这两个值的时候,我再。真的等于零,或者哦,真的等于。一的情况下我再查,其他情况下,你带了234我或者不带,我就默认你没带正的。诶,有些同学还说你这个针的这一块,你不是字符串吗?这个等等零看起来像数字判断可以吗?诶这是可以的啊,O7来了,它会自动转换进行判断。进行咱们这个字符串。字符串与咱们这个数字。的转换判断。比如说呢,他认为你传过来的字符串零跟你这个等等零,哎是一样的。我们把这个写完以后,我们接下来进行测试这个方法。
12:04
这个测试我们就在这里边来写。好在这一块测试public。VO。Test。抬到零起,我也不知道了,我们就来测试动态circle dynamic circle。好。好,我们在这测试第一步get circle factor,哎,这都老步骤了,烂熟语清,大概。接下来呢,Circle session.open session获取一个session对象,然后从这个session中我们来串分到了一下。从这个session中,我们要获取到。咱们这个。好,我们从open session中get member,哎,我们的member呢,是employee member动态。
13:07
Plus。好,拿到它,然后呢,我们来调用它里边的这个查询点,好,Get EP by condition。按照条件进行查询。我们这个employee对象,我们来给他。查询条件,我们给它创建拼装出来。我们来给他带上员工ID,假设我来查。好,那么last name呢,我们模糊查询啊,它里边有包含啊。包含一的,哎,我记得三号员工叫杰瑞,他包含一,我们先查成功啊。这个email呢,我们来看一下,好,就有这个杰瑞。好,然后真的我们先不带来测试。把这一块返回。
14:00
返回。EPS啊,我们来。便利。把每一个员工我们来打印出来。来测试。好。走。诶,我们来看查询的SQL语句。这个SQL语句呢,诶,它这一块S了星,我们主要来看这个SQ语句。他都是怎么拼的?这个circle语句呢,因为我们这个ID是符合要求的,带了他拼上了ID last name,带了他拼上了last name email带了拼上了email,而真的不合法,他就没凭真的。如果email我们也不合法。email是一个闹。那么呢,他也就不会有email这个查询。走。来我们再来看这个查询来email就没有了,所以说呢,我们这个F可以我们这个根据查询条件来动态拼装我们这个circle。
我来说两句