Java开发之SSM企业轻量级开发框架、第三章

动态SQL语句

if标签:
if用法类似Java中的if语句,选择性拼接指定SQL片段.
格式:

<if test="条件">
	SQL片段
</if>

说明:
1.当条件为true时,将SQL片段拼接到该标签所在位置

choose,when,otherwise
用法类似Java的if else if 语句,用于多次判断,选择性拼接指定SQL片段.
格式:

<choose>
	<when test="条件1">SQL片段1</when>
	<when test="条件2">SQL片段2</when>
		...
	<otherwise>默认SQL片段</otherwise>
</choose>

说明:
1.choose,when,otherwise不能单独使用,必须混合使用.
2.choose中可以含有N个when,0或1个otherwise

forEach标签:
用于遍历集合,通常用于构建in语句中.
格式:

<select id="业务匿名" resultType="结果类型[类全名]" >
	select 字段列 from 表名 where 字段名 in
	<foreach collection="集合" item="变量A" index="变量B" open="" 	separator="" close="">
	#{变量A}
	</foreach>
</select>

说明:
1.collection属性值为集合类型的属性名.
2.item属性值为变量名,名称任意.该变量存放当前元素/键值
3.index属性值为变量名,名称任意.该变量存放当前元素索引/键名
4.open,separator,close属性值为符号,表示遍历开始/中间/结束时拼接的符号

<!--测试<forEach: 测试age为20,21,22,23,24,25-->
<select id="dynacSQL3" resultType="user" parameterType="java.util.List" >
    select * from user where age in
        <foreach collection="list" item="ageval" open="(" separator="," close=")">
            #{ageval}
        </foreach>
</select>
<!--测试<forEach: 测试age为20,21,22,23,24,25-->
<select id="dynacSQL3" resultType="user" parameterType="java.util.ArrayList" >
    select * from user where age in
        <foreach collection="array" item="ageval" open="(" separator="," close=")">
            #{ageval}
        </foreach>
</select>

where标签:
要求:

<where>需要与<if>,<choose>,<when>,<otherwise>等配合使用

作用:
a.当至少有1个子标签的条件为true时,where生成1个"where"关键字.
b.若where后紧挨"AND/OR"时[where and 条件],where自动去除.
格式:

<where>
	其他动态SQL标签
</where>
说明:
1.<where>标签中编写<if>,<choose>,<when>,<otherwise>,<forEach>等标签

set标签:
set用于修改命令中,能够动态前置"set"关键字,同时可以删除多余的逗号.
格式:

<update id="业务匿名" resultType="int">
	update 表名
	<set>
		其他动态SQL标签或SQL片段
	</set>
</update>
说明:
1.<set>标签中编写<if>,<choose>,<when>,<otherwise>等标签

sql在业务标签外,定义一个SQL片段,在其他业务标签中可以通过引用该SQL片段.
格式:

<sql id="SQL片段匿名">
	SQL片段
</sql>
说明:
1.SQL片段内容可以是SQL语句的任何部分.
2.<sql>标签对之间可以嵌套动态SQL标签,产生更加方便的SQL片段
3.当需要引用SQL片段时,编写<include refid="SQL片段匿名">即可引用.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值