MyBatis动态SQL

动态SQL的作用

MyBatis的动态SQL主要是为了解决手动拼接sql语句的麻烦。

动态SQL中的元素

– if 判断语句,用于单条件分支判断

– choose(when,otherwise) 相当于switch-case-default,用于多条件判断

– where、set 辅助元素,用于处理SQL拼装

– trim 辅助元素,用于处理特殊字符

– foreach 循环语句,相当于for

1、 元素

在MyBatis中,元素是最常用的判断语句,它类似于Java中的if语句,主要用于实现某些简单的条件选择。

2、元素

相当于switch...case...default语句

3、元素

会在写入where元素的地方输出一个where,另外一个好处是你不需要考虑where元素里面的条件输出是什么样子的,MyBatis会智能的帮你处理,如果所有的条件都不满足那么MyBatis就会查出所有的记录,如果输出后是and开头的,MyBatis会把第一个and忽略当然如果是or开头的,MyBatis也会把它忽略;此外,在where元素中你不需要考虑空格的问题,MyBatis会智能的帮你加上。

4、set元素

当update语句中没有使用if标签时,如果有一个参数为 null,都会导致错误。

当在update语句中使用if标签时,如果前面的if没有执行 ,则或导致逗号多余错误。使用set标签可以将动态的配置 SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。


		update emp
		
			
				ename=#{ename},
			
			
				job=#{job},
			
			
				mgr=#{mgr},
			
			
				hiredate=#{hiredate},
			
			
				sal=#{sal},
			
			
				comm=#{comm},
			
			
				deptno=#{deptno},
			
		
		where empno=#{empno}

5、trim元素

的作用是去除特殊的字符串,它的prefix属性代表语句的前缀,prefixOverrides属性代表需要去除的哪些特殊字符串,功能和基本是等效的。

5、foreach元素

– 主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

– foreach元素的属性主要有 item,index,collection, open,separator,close。

    – item表示集合中每一个元素进行迭代时的别名

    – index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置

    – open表示该语句以什么开始

    – separator表示在每次进行迭代之间以什么符号作为分隔符

    – close表示以什么结束

    – collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:

1、如果传入的是单参数且参数类型是一个List的时候, collection属性值为list

2、如果传入的是单参数且参数类型是一个array数组的时候 ,collection的属性值为array

3、如果传入的参数是多个的时候,我们就需要把它们封装 成一个Map了,当然单参数也可以封装成map,实际上如 果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key。(红字注意!

SQL代码片段

通过Sql代码片段,实现sql代码重用

        
		select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp
		where
		empno in
	

	

 

 

 

 

 

你可能感兴趣的:(MyBatis)