00:00
好,下面我们来学习一下MY里面的另外一个非常重要的功能,叫做动态circle。好,这个动态circle呢?它是一种根据特定条件,然后动态拼装circle口尾句的功能,它存在的意义呢,是为了解决拼接circle尾句字符串时的一个痛点问题。它的本质啊,其实就是映射文件中的一系列的标签啊,比如说if标签,Well标签,Dream标签,然后这是一套标签对吧,叫choose when other best,还有一个for each,还有一个是circle片段啊,然后他们的功能就是帮助我们来拼接circle,那咱们拼接circle的时候有什么痛点问题呢?然后咱们给大家举个例子啊,叫做多条件查询的例子,然后呢,咱们先说一下用原生的这个GDBC该如何实现,然后我们再通过咱们的买杯体词中的动态circle,然后来实现一下来解决这个问题啊。好,然后比如说多条件查询,大家应该在好多网页中都见过,对吧,其实就是我们的一个页面,然后页面中呢,咱们主要咱们实现的是一个查询,然后在页面中呢,有多个表单项,比如说有文本框,有单选框,有复选框,让我们去选择某个条件啊,然后你选择了某个条件呀,它就会根据当前的条件去查询数据。
01:16
那从咱们的搜Q语句的角度来说,就是说我们在页面中大家去选择了某个条件,那我们当前的这个条件就会被拼接到SQL中,然后通过这个条件去查询数据。好,然后这个功能呢,大家注意啊,它的难点是在哪儿的?就是说我们页面中咱们可以设置这个条件,你也可以不设置,那你要设置的这个条件,那这个条件就一定要拼接到circle口语句中,然后根据这个条件去查询,而如果我们当前没有设置这个条件的话,那大家一定不能根据这个条件去查询,也就是说从circleql语句的角度来说,你的SQL语句中一定不能出现这个条件,对吧?好,那所以呢,那这个功能咱们该如何去实现呢?大家想一下,比如说我们在页面中,这是一个文本框啊,然后根据员工性名来查的,这是一个文本框,根据员工的年龄来查的,这是一个文本框,是根据员员工的性别来查的,然后在这儿呢,有一个按钮叫做查询按钮,对吧?那大家说当我输入了员工姓名,当我输入了年龄,当我输入了性别,这三个条件咱们都输入了之后,然后这个时候表示什么意思?
02:28
表示的是我们要根据员工姓名,然后又要根据年龄,又要根据姓别去查对不对,而如果我们只设置了员工的姓名的话,那我们是不是只需要根据员工的姓名去查就行?所以说呢,动态这个多条件查询,它的一个难点就是说你设置的这个条件,那这个条件就需要拼接在circleq中,而如果你要没有设置这个条件,那这个条件一定不能出现在SQL语句里面这样的啊。好,那所以说那我们需要来判断的是什么呢?大家注意,你要来判断一下你当前在页面中有没有设置这个条件,如果你设置了,那我们就要把条件拼到circleq里面,如果你要没有设置,那咱们就不需要去拼,好所以现在咱们就需要来考虑一下,你在服务器去获取这些数据的时候,就是我们所选择的这些条件的时候,对吧?你获取的是什么值的时候,表示的是它没有去选择这个条件的,也就是说当我们没有选择这个条件的时候,我们是不是仍然要去提交我们当前的这这个表单,对吧?那你提交到表单,把表单中的数据提交到服务器中之后,我怎么知道你有没有设置这个条件呀?
03:39
大家想想是不是对吧?好,这个时候就涉及到了一个问题,什么问题,就是咱们的表单呢?在提交的时候,咱们不同的表单项,然后提交到服务器中的数据的一些临界值,什么叫做临界值呢?就比如说这个文本框里面我什么都没有输入,我提交到服务器中是什么?或者说我的单选框或复选框你没有选择,那我提交到服务器中的又是什么?然后如果我没有传输这个数据,你在服务器中去获取这个数据了,那它获取的又是什么?大家注意,很简单,给大家总结一下啊,无非就两个特殊的值,一个是难。
04:17
一个是空字不串。好,比如说呀,如果你现在你没有向服务器中去传输某个请求参数,而我们当前咱们却获取了,在服务器中你却获取了这个请求参数,那你获取的大家注意全部都是,那这个大家注意啊,就比如说我们第一次来访问这个页面,那大家都知道我只有点击查询的时候才会提交这个表单,但是我第一次去访问这个页面的时候,咱们是不是要把所有数据展示出来,对不对,那这个时候咱们就没有去提交这些数据,而我在服务器中咱们一定是会获取这些数据的,好,这个时候咱们获取的就是什么null,大家注意啊,再说一遍,如果你没有去传输某些请求参数,而我在服务器中却获取的这个请求参数,那咱们获取的都是难,然后下面呢,那我们再来看第二种情况,如果说我当前我是提交表单的,然后但是你的文本框里面什么都没有输入,那这个时候大家注意你提交到服务器中的就是空字不串。
05:21
为什么是这样的呢?大家都学过GS对吧,我就问大家一个问题啊。你怎么通过GS把一个文本框清空,怎么清空啊。咱们是不是首先要通过do,然后来获取我们页面中的某一个文本框,获取完之后点value操作,它的value属性等于空字不串就是清空,所以说当你的文本框里面什么都没有的时候,然后它其实它的Y流属性值就是空字符串,所以当我们把一个这个空文本框,然后把它提交到服务器中,咱们所获取的它的value流属性质量就是空字符串啊,这个大家注意好,然后下面还有一个单选框和复选框,这两个比较特殊,比如说咱们有个单选框,有个复选框,然后这个时候呢,我们把它提交到服务器中,你没有去选择单选框,也没有选择复选框,这个时候你在服务器中获取的是什么呢?大家注意,因为单选框和复选框咱们提交的时候,提交的是什么?选中的单选框和选中的复选框的value,所以说当你没有选中的时候,那你就没有向服务器传输,那就跟咱们的这种情况是一样的。获取的都是耐。
06:31
所以说呢,我们现在要想来判断你当前的这个条件需不需要被拼接到so口中,非常简单,你只需要干什么呀?我们只需要在服务器中判断一下,当它不为难并且也不为空磁波串的时候,那说明我们当前一定是设置的这个条件,而如果它要是等于烂货,等于空自不串的话,那就说明我们一定是没有设置这个条件的,这个大家能听懂吧?听好了啊,咱们判断的条件是难和空字不串这两个特殊的数据,如果不为难,也不为空字不串,那咱们就说明你设置的这个条件,那我们就要把条件给拼到口中,而如果说你现在获取的是难,或者说是咱们的空字不串的话,然后这个时候那就说明什么,我们没有设置个没有设置这个条件,OK吧,好,那这是咱们的第一点啊,就是咱们需要来如何去判断你有没有设置这个条件的问题,那我们现在呢,咱们在服务器中,我们可以通过判断呀,然后咱们知道你有没有设置这个条件,那我下面要做的是不是还要把这个条件给拼到circle口中。
07:41
怎么拼呀,在这咱们是不是要写一个select啊,Select,然后星,然后from表明对不对,好,然后下面咱们是不是要加上一个while条件去拼接它后边去加上一个well关键字去拼接的后边的条件了,那我们在这是不是叫各种if判断对吧,然后来判断,比如说咱们的员工姓名,他不等于难,并且不等于空字不串的时候,然后我们才需要去拼接这个条件对不对?那大家说那你怎么拼接,那这不是咱们的circleq吗?那咱们是不是就要拿着circleq语去去拼接咱们当前的这个啊,Emp下划线内幕,然后等于谁谁谁对不对啊,然后咱们就要这样来拼接了啊好,但是现在的问题是什么?你看我在这我是不是要写一个条件叫emp,然后下划线内幕,然后等于谁,然后下面咱们还得有一个if,这个if咱们判断完之后,下面咱们是不是要写一个什么叫做。
08:41
And a级,然后等于谁谁谁对不对,是这样去写的,好,然后现在大家说,那为什么我要在这加and,因为我这是第二个条件,我是不是要跟上面这个去拼接呀,那但是大家想想,那如果我们当前咱们的这个条件如果不符合的话,那你的while后边是不是就直接就跟了一个and。
09:02
那有同事老师我不加行不行,那肯定也不行啊,你如果说你在这儿不加,那我问大家,如果当前这两个条件都是符合的,那你的EP内等于谁,然后下面跟的是不是直接就是A级等于谁了,对不对,那不就少了一个案子吗?所以说这个案子咱们一定要加,知道吧?好,当然还有一些情况,比如说我下边的每个条件都不符合,我这个条件不符合,这个条件也不符合,那你会发现你当前的这个锁口后边是不会去拼接任何一个条件的,那这个时候这个while是不是就多出来了,对不对。对吧,所以说大家注意啊,你像我们的多条件查询,咱们去拼接条件的时候,它确实不好写,特别是咱们的while关键字的处理,还有就是我们当前这个and的处理确实是不好做啊,好,然后咱们通过Java代码呢,然后这个拼接SQ语句呢,然后确实是比较的麻烦,然后这个时候我们就可以通过谁啊,咱们的my be里面的动态circle去实现这个功能,然后这个时候大家注意啊,就简单很多了,咱们只要通过这个标签,你用相对应的标签来实现相对应的功能,就可以把咱们当前的circle去完整的去拼接出来,OK吧,好,那下面呢,我们就通过咱们的my be的动态circle来实现一下啊。
我来说两句