当前位置 : 主页 > 编程语言 > c++ >

Mybatis动态sql语句

来源:互联网 收集:自由互联 发布时间:2021-07-03
t.text 1.if通过if把会做的事情有条件的包含在where里面,例子:select * from tb_employee where state='active' and id=#{id} and sex=#{sex} 这句话意思是如果没有传入id这个参数,那么返回所有state='active
t.text
1.if
通过if把会做的事情有条件的包含在where里面,例子:
select * from tb_employee where state='active'

 
  
and id=#{id} and sex=#{sex}

 
这句话意思是如果没有传入id这个参数,那么返回所有state='active'的结果,如果传入id以及sex参数,那么只返回特定id
的active状态的结果。

2.choose(when otherwise)
choose相当于JAVA中的switch,通过用户传入的参数进行条件选择,从而执行相应的语句。例子:

上述代码的意思是当传入tb_id参数执行tb_id,传入tb_sex以及tb_age的时候执行tb_age and tb_sex,当不传入参数
执行otherwise的语句,如果同时传入三个参数,那么会按照第一个条件进行。

3.where
where元素知道只有在一个以上的if有值的情况下才去插入where子句。同时他会自动帮忙剔除或增加AND 或者OR开头的。

上述代码中的tb_age以及tb_sex条件判断内容是AND语句,如果前面没有传入tb_id,那么where会自动把AND前缀去掉。

4.set
set元素可以被用于动态包含需要更新的列,而舍去其他的,也就是说可以通过用户提交的信息选择性的进行更新。例子:

 
  
		update  tb_user 
		
   
   
    tb_name=#{name}
    
   
    tb_sex=#{sex}
    
   
    tb_age=#{age}
    
  
       where tb_id=#{id}
	
 
上述代码中if语句里面包括了要更新的列名,当传入的User对象中的某些属性没有设置的时候则会过滤掉这些属性,而只修改
传入的属性。

5.foreach
主要用来遍历集合查询相关结果。例子:

上述代码中
item表示集合中每一个元素进行迭代时的别名,
    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
    open表示该语句以什么开始,
    separator表示在每次进行迭代之间以什么符号作为分隔 符,
    close表示以什么结束。
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况
下,该属性的值是不一样的,主要有一下3种情况:

    1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
    2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
    3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可
以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参
数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key

6.bind
主要用来从OGNL表达式中创建一个变量并绑定要上下文,例如查询名字中含有“周”的用户信息。例子:

上述代码中要注意value的取值,_parameter表示的是获取到的对象,这个很关键,要不然为空会获取不到。整个意思是查询
id中含有2的数据信息。
网友评论