mybatis中mapper的if,where,set等标签的用法

if,基本都是用来判断值是否为空


        
            and username = #{userCustom.username}
        
        
            and sex = #{userCustom.sex}
        
     

where用来去掉多条件查询时,开头多余的and

    select * from user
    
    
    
    
    
    

    

set

set标记是mybatis提供的一个智能标记,我一般将其用在修改的sql中,例如以下情况:


    update user 

    

      name = #{name},

      gender = #{gender},

    

    where id = #{id}

  

在上述的代码片段当中,假如说现在三个字段都有值得话,那么上面打印的SQL语句如下:

update user set name=‘xxx’ , gender=‘xx’ where id=‘x’

在上面标红的地方是没有逗号的,也就是说set标记已经自动帮助我们把最后一个逗号给去掉了

foreach 用来遍历数组或者集合

mybatis中mapper的if,where,set等标签的用法_第1张图片

        
    每次遍历需要拼接的串
                id= #{user_id}
        
 

需求:SELECT * FROM USER WHERE id=1 OR id=10 OR id=16
或者:SELECT * FROM USER WHERE id IN(1,10,16)

其中,collection:指定输入对象中集合属性,item: 每个遍历生成对象,open:开始遍历时拼接串,close: 结束遍历是拼接的串,separator: 遍历的两个对象中需要拼接的串

     
    
                id= #{user_id}
    

choose

有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件。MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系。

choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。

  

你可能感兴趣的:(mybatis中mapper的if,where,set等标签的用法)