【转】]ibatis模糊查询,条件控制

本文介绍在Ibatis中如何使用动态SQL实现安全高效的查询操作。通过具体示例展示了如何利用isNotNull、isNotEmpty等条件判断进行智能拼接查询语句,并且解释了#与$符号的区别及应用场景。

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

<!--
在ibatis中使用安全的拼接语句,动态查询
ibatis比JDBC的优势之一,安全高效
说明文字在注释中
-->


<selectid="selectAllProducts"parameterClass="Product"resultMap="ProductResult">
selectid,notefromProduct
<dynamicprepend="WHERE">
<!--isNotNull判断参数是否存在,Integer类型-->
<isNotNullproperty="id">
<!--isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于-->
<isGreaterThanprepend="and"property="id"compareValue="0">
id=#id#
</isGreaterThan>
</isNotNull>
<!--isNotEmpty判断字串不为空,isEmpty可以判断字串为空-->
<isNotEmptyprepend="and"property="note">
<!--模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换-->
notelike'%$note$%'
</isNotEmpty>
</dynamic>
</select>

用Map传参数

<selectid="selectAllProducts"parameterClass="java.util.HashMap"resultMap="ProductResult">
selectid,notefromProduct
<dynamicprepend="WHERE">
<!--isPropertyAvailable判断属性是否有效-->
<isPropertyAvailableproperty="id">
<isNotNullproperty="id">
<!--isLessThan判断参数是否小于compareValue,isLessEquals是小于等于-->
<isLessThanprepend="and"property="id"compareValue="10">
id=#id#
</isLessThan>
</isNotNull>
</isPropertyAvailable>
</dynamic>
</select>
<!--------------------------------------------------------------------几个常用属性-->

<isPropertyAvailable>属性是存在
<isNotPropertyAvailable>属性不存在
<isNull>属性值是null
<isEmpty>判断Collection.size<1或String.length()<1
<isEqual
>等于
<isNotEqual>不等于
<isGreaterThan>大于
<isGreaterEqual>大于等于
<isLessThan>小于
<isLessEqual>小于等于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值