栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用动态sql整理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用动态sql整理

动态sql

概述

ifchoose、when和otherwise元素trim、where和set元素foreach元素bind元素

概述

Mybatis的动态sql包括以下几种元素:

元素作用备注
if判断语句单条件分支判断
choose(when,otherwise)相当于java中的switch和case语句多条件分支判断
trim(where,set)辅助元素,用于处理特定的sql拼装问题,比如去掉多余的and、or等。用于处理sql拼装的问题
foreach循环语句在sql的in语句中常用

动态SQL实际使用的元素并不多,但是它们带来了灵活性,在减少许多工作量的同时,很大程度上提高了程序的可读性和可维护性。

if

if元素是最常用的判断语句,相当于Java中的if语句,它常常与test属性联合使用。



	select id, user_name, note 
	from user
	where 1=1
	
		and user_name like concat('%', #{name}, '%')
	


choose、when和otherwise元素

有这样一个场景:
1.如果编号不为空,则只用编号作为条件查询。
2.如果编号为空,则名称不为空,则用名称作为条件进行模糊查询。
3.如果编号和名称都为空,则要求备注不为空。



	select id, name, note 
	from student
	
		
			 name like concat('%', #{studentName}, '%')
		
		
			and note like concat('%', #{note}, '%')
		
	




	select id, name, note 
	from role 
	where id in
	
		#{id}
	
	


collection 配置的是传递进来的参数名称,它可以是数组、List、 Set 等集合。item配置的是循环中当前的集合成员名称。
index配置的是当前集合成员在集合的位置下标。
open和close配置的是将这些集合成员包装起来的符号。
separator是各个元素的间隔符。

bind元素

在进行模糊查询时,如果使用MySQL数据库,那么用到的常常是concat函数,需要将“%” 和参数做字符串连接。如果使用Oracle数据库,则用连接符号“||",这样SQL需要提供两种实现形式。但是有了bind元素,就不必使用数据库的语言,只需使用MyBatis的动态SQL即可完成。


这里的“parameter ” 代表传递进来的参数,它和通配符(%)连接后被赋给了变量“pattern”,然后就可以在select语句中使用这个变量进行模糊查询了。无论是MySQL还是Oracle都可以使用这样的语句,提高代码的可移植性。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号