iBatis动态标签详解

本文详细介绍了MyBatis框架中动态SQL的实现方式,包括<iterate>标签用于遍历列表,<dynamic>标签用于构建动态SQL语句,以及各种条件判断元素如isNotNull、isGreaterThan等的使用方法。

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

1、<iterate>: 该标签用于遍历一个list。它有以下属性:

 prepend:sql语句组成部分,可以被覆盖,可为and、or等,该选项是可选的

 open:整个遍历内容开始前设置的字符串,常常设为‘(’。该选项是可选的

 close:整个遍历内容结束时设置的字符串,常常为‘)’。该选项是可选的

  conjunction:遍历内容中间间隔的字符串,可为‘,’、‘and’、‘or’等。该选项是可选的

 property:遍历的list,类型为java.util.list,该选型明显是必须的。

 例子:

<select id="queryData" parameterClass="java.util.List" resultClass="java.lang.String">
select password from userinfo where user_name in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
    </select> 

2、<dynamic>:

dynamic主要用于动态拼接sql语句,dynamic元素可以包含多个条件比较元素,并且按照条件比较元素的表述对参数值进行比较,来组装动态SQL。 这里主要的条件比较元素包含isGreaterThan、isNotNull、isEmpty…… 

dynamic中的prepend可以覆盖第一个为真子元素的prepend值。例如:

select * from usrinfo
        <dynamic prepend="where"> 
                <isNotNull property="name" prepend="and">
                    name=#name#
                </isNotNull>
                <isNotNull property="sex" prepend="and">
                    sex=#sex#
                </isNotNull>               
        </dynamic>

 若“name” isNotNull 为true,则sql语句为:select * from usrinfo where name=?and sex=?

select * from usrinfo where sex = 'femail' 

<dynamic>

<isNotNull property="usrName">

and usrName = #name#

</isNotNull>

<isGreaterThan property="id" compareValue="0">

and id = #id#

</isGreaterThan>

</dynamic>


3、一元条件元素属性:

prepend(可选)、property(必选)

<isNotNull property="usrName">

<isNull property="usrName">

<isEmpty property="usrName">

<isNotEmpty property="usrName">

4、二元条件查询属性:

prepend(可选)、property(必选)、compareProperty、compareValue、后两个元素至少选一个

<isGreatorThan property="id" compareValue="0">

<isLessThanproperty="id" compareValue="0">

<isGreatorEqualproperty="id" compareValue="0">

<isLessEqual property="id" compareValue="20">

<isEqual propertu="id" compareValue="20">

<isNotEqual property="id" compareValue="20">




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值