MyBatis 动态sql语句

简述

  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

   

  

原文地址:https://www.cnblogs.com/qq2210446939/p/13556450.html