mybatis常用判断语法(标签)

本文介绍了MyBatis中if和choose标签的应用,用于动态生成SQL语句。通过实例展示了如何利用这些标签进行条件判断,简化SQL语句的编写过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为java开发,我们常用的判断有if、switch语句,其实在MyBatis中也有对应的标签,用于动态生成sql语句。

1. if判断

<where>
    <if test="null != statusCode and 0 != statusCode">
        AND b.STATUS_CODE = #{statusCode, jdbcType=VARCHAR}
    </if>
</where>

一般来说,很多程序猿朋友会在<if>标签前增加WHERE 1=1语句,但其实只需要像上面代码中增加<where>标签包裹所有<if>语句,<if>内语句前面都有and或者or关键字就行:

  • MyBatis会自动判断所有条件不满足时,不添加where语句;
  • 如果有多判断语句,并且满足一个条件以上时,会把第一条满足的(如果第一条有and或者or关键字时)and或者or关键字删除;

2.choose判断

<choose>
	<when test="5 == queryType">
		CASE WHEN statusCode IN (1,6) THEN 1 ELSE 2 END,createTime DESC
	</when>
	<when test="1 != queryType and 9 != queryType">
		createTime DESC
	</when>
	<otherwise>
		<choose>
			<when test="null == orderType or 1 == orderType">
				auditTime
			</when>
			<when test="2 == orderType">
				downloadCount
			</when>
			<when test="3 == orderType">
				browseCount
			</when>
			<otherwise>
				is666Count
			</otherwise>
		</choose>
		<if test="null == orderMode or 1 == orderMode">
			DESC
		</if>
	</otherwise>
</choose>

以上代码使用了标签嵌套特性,用于复杂条件判断。

choose判断跟if else语句作用相同,起到根据条件执行不同分支逻辑的作用。而otherwise跟多个if else中最后一个else的作用相同,在以上条件都不满足时,执行otherwise中的逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值