简述
sql语句是支持动态查询的,支持if,when等标签进行判断。
我们现在新建个工程用于动态sql语句的实现。
<if>标签
首先我们在dao接口新建个方法,这个方法用于根据传入的参数进行查询
然后我们在xml文档写我们的配置,在写sql语句的时候我们就要用到动态sql的标签<if>,if标签里面的test就是我们要判断的条件,这里需要注意这是sql的判断,与要写成and不能写&&
然后我们来写测试方法
执行后没有问题
如果我们有两个判断条件,userName和sex非空时就作为判断条件,我们就再加上一个if标签
现在我们在测试方法多加个sex判断
现在查询的就是名字叫老王且性别是女的元组
<where>标签
用where也能实现多个if的情况,where标签可以省略1=1,本质是mybatis自动帮你加1=1
结果也是一样的
<foreach>标签
在实际操作中我们会有查询条件为集合的需求,例如要找id在集合(42,43,50)里出现的元组,这个查询用sql语句很简单就能写出来
那在mybatis怎么实现呢?我们在之前写的queryvo类里面加个list用于表示查询条件的集合,并生成它的get和set方法
然后我们来写dao接口的方法
再来写xml的配置,这里用到我们的foreach标签
collection:代表要遍历的集合元素,注意编写时不要写#}
open:代表语句的开始部分
close:代表结束部分
item:代表遍历集合的每个元素,生成的变量名sperator代表分隔符
然后我们来写测试类,很简单没啥要说的
跑出来没有问题
这里有个需要注意的点就是#{}里面写什么是取决于item里面写的什么,item写uid,井号里面就要写uid
以上就是sql动态语句的实现了,因为学校上课完全没有讲,所以这篇博客写得极其缓慢,现在写完了真爽快!
2020/8/26 23:00:37