MyBatis的动态SQL

MyBatis的动态SQL主要有if、choose(when、otherwise)、trim(where、set)、foreach.

1、if的用法


将参数roleName传递到映射器,采取构造对roleName进行模糊查询,如果这个参数为空,就不去构造这个条件。

2、choose、when、otherwise

if语句是一种非此即彼的关系,有时候我们不需要非此即彼的选择,可能需要第三种甚至更多的选择,需要使用choose、when、otherwise



3、trim、where、set元素

where元素的用法:当where里面的条件成立的时候,才会加入where这个SQL关键字到组装的SQL里面,否则就不加入,例如上面"1=1",如果没有这个就是错误的SQL语句,可以改写为:



如果想要去掉一些特殊的SQL语法,比如常见的and、or,使用trim元素可以达到目的;



在update中,如果只想更新特定的字段,可以使用set元素来操作;



	update role_t
	
		
			role_name=#{roleName}
		
		
			note=#{note}
		
	

4、foreach循环

foreach是一个循环语句,他的作用是遍历集合。可以支持对数组、List、Set的遍历



  • collection:传进来的集合参数的名称
  • item:循环中的当前元素
  • index:当前元素在集合中的位置下标
  • open、close:用什么符号将这些元素包装起来
  • separator:各元素之间的间隔符

5、test属性

test属性用于条件判断语句中,作用是判断真假,在if语句中使用广泛


6、bind元素

bind的作用是通过OGNL表达式定义一个上下文变量,方便下文使用,可以在MySQL和Oracle数据库之间通用,提高了可移植性;
定义接口为:
public List findRole(@Param("roleName")String roleName, @Param("note")String note);
然后定义映射文件:



你可能感兴趣的:(MyBatis学习总结)