Mybatis 动态SQL汇总

MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。 

1、if 标签

使用 if 元素判断,如果值为 null 或等于空字符串,我们就不进行此条件的判断,增加灵活性。

  

或者 if-else 写法

2、foreach 标签

foreach 的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合,用于传入一个list参数。

​public void delQuestion(@Param("idList") List idList);

 AND id IN
    
        #{id}
    
  • 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list。
  • 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array。
  • 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可。

(1)实现批量更新


            update course
            
             
                 
                         
                          when id=#{item.id} then #{item.name}
                         
                 
              
              
                 
                         
                          when id=#{item.id} then #{item.title}
                         
                 
              
             
            where
            
              id=#{item.id}
          

(2)实现批量删除

​​

    
	
    delete from emp where empno in
		
			#{arr}
		

(3)实现批量插入or更新数据(MySQL库)

//批量新增or更新数据
public Boolean InsertOrUpdate_List(List info);


    insert into UesrInfo (id,type,name)
    values
    
        (#{info.id},#{info.type},#{info.name})
    
    ON DUPLICATE KEY UPDATE
    type = VALUES(type),name = VALUES(name)

3、include 标签

在数据库的使用中,查询的时候时候不要使用*号,*是查询所有,可以用include来拼接SQL语句。


    id,title,small_pic,intime,status,inuser,org_name,org_id,online_from_date,online_to_date,source_type,update_time,org_type


4、trim 标签

trim标记是一个格式化的标记,可以完成set或者是where标记的功能,自定义格式。有如下属性:

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

demo展示:

  
        insert into cart  
          
              
                id,  
              
              
                user_id,  
              
              
                deal_id,  
            
          
          
              
                #{id,jdbcType=BIGINT},  
              
              
                #{userId,jdbcType=BIGINT},  
            
          
    

5、 特殊字符

在mapper文件中写sql语句时,遇到特殊字符时,不被解析器解析。

(1)

(2)转移符

符号 转移符 说明
> > 大于
< < 小于
>= >= 大于等于
<= << 小于等于
& &
' 单引号
" 双引号

你可能感兴趣的:(Spring框架)