sql 标签的使用

Posted ToSun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 标签的使用相关的知识,希望对你有一定的参考价值。

条件

  <choose>
        <when test="isUpload">
       
        </when>
        <otherwise>
         
        </otherwise>
    </choose>
    choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
    <where> <if>
     <where>
     <if test="id != null ">id=#{id}</if>
     <if test="name != null and name.length()>0" >and name=#{name}</if>
     <if test="gender != null and gender.length()>0">and gender = #{gender}</if>
     </where>

函数

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

去余

 <trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>
prefix:在trim标签内sql语句加上前缀。
suffix: 在trim标签内sql语句加上后缀。
suffixOverrides:指定去除多余的后缀内 
容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。

集合

in 搭配<foreach> 传递多个参数
item:集合中元素迭代时的别名,该参数为必选。
index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选
open:foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选
separator:元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。
close: foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。
collection: 要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象有"array"代替作为键,Map对象没有默认的键。当然在作为入参时可以使用 
@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性List ids。入参是User对象,那么这个collection = "ids".如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"

获取某个关键值

在mapper文件加useGeneratedKeys="true" keyProperty="id"。这里是获取的id

以上是关于sql 标签的使用的主要内容,如果未能解决你的问题,请参考以下文章

mybatis动态sql之利用sql标签抽取可重用的sql片段

6.mybatis里面的动态sql是怎么设定的,常用标签有那些以及其

如何通过代码设置片段标签?

[mybatis]动态sql_sql_抽取可重用的sql片段

MyBatis高级特性

操作栏标签片段中的片段?