§<dynamic>标签§二元标签§一元标签§<iterate>标签§ 共同的属性 prepend,open,close <dynamic>标签§<dynamic>标签§属性 prepend,open,close 二元条件标签§<isEqual property=“age” compareValue=“20”> 比较属性值和静态值或另一个属性值是否相等
§<isNotEqual> 比较属性值和静态值或另一个属性值是否不相等。
§<isGreaterThan> 比较属性值是否大于静态值或另一个属性值。
§<isGreaterEqual> 比较属性值是否大于等于静态值或另一个属性值。
§<isLessThan> 比较属性值是否小于静态值或另一个属性值。
§<isLessEqual> 比较属性值是否小于等于静态值或另一个属性值。
一元条件标签
§<isPropertyAvailable> 检查是否存在该属性(存在parameter bean的属性)
§<isNotPropertyAvailable> 检查是否不存在该属性(不存在parameter bean的属性)
§<isNull> 检查属性是否为null
§<isNotNull> 检查属性是否不为null
§<isEmpty> 检查Collection.size()的值,属性的String或String.valueOf()值,是否为null或空(“”或size() < 1)
§<isNotEmpty> 检查Collection.size()的值,属性的String或String.valueOf()值,是否不为null或不为空(“”或size() > 0)
其他标签
§<isParameterPresent> 检查是否存在参数对象(不为null)
§<isNotParameterPresent> 检查是否不存在参数对象(参数对象为null)
§<iterate> 遍历类型为java.util.List的元素。
view plaincopy to clipboardprint?<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap> <!-- 动态查询1--> <select id="getOrders1" parameterClass="com.air.Account" resultClass="com.air.Product"> SELECT orders.id as id, orders.product as product, orders.customer as customer FROM orders <dynamic prepend=" WHERE "> <isNull property="username">customer IS NOT NULL</isNull> <isNotNull property="username"> orders.customer=#username# </isNotNull> </dynamic> </select> <!-- 动态查询2--> <select id="getOrders2" parameterClass="com.air.Account" resultClass="com.air.Product"> SELECT o.id as id, o.product as product, o.customer as customer FROM orders o <isNotNull property="username"> INNER JOIN user_account a ON o.customer=a.username </isNotNull> <dynamic prepend="where "> <isNotEmpty property="groupname" prepend="and " open="(" close=")"> a.groupname=#groupname# </isNotEmpty> </dynamic> </select> <!-- 动态查询3--> <select id="getOrders3" parameterClass="com.air.Product" resultClass="com.air.Product"> SELECT orders.id as id, orders.product as product, orders.customer as customer FROM orders <dynamic prepend="WHERE "> <isNotEmpty property="product" prepend="and" open="(" close=")" removeFirstPrepend="true"> product=#product# </isNotEmpty> <isNotEmpty property="customer" prepend="and" open="(" close=")"> customer=#customer# </isNotEmpty> </dynamic> </select> <!-- 动态查询4--> <select id="getOrders4" parameterClass="com.air.Product" resultClass="com.air.Product"> SELECT * FROM orders <dynamic prepend="WHERE "> <iterate property="keywords" open="(" close=")" conjunction="OR"> product=#keywords[]# </iterate> </dynamic> <!-- <dynamic prepend="WHERE product IN ">--> <!-- <iterate property="keywords" open="(" close=")" conjunction=","> --> <!-- #keywords[]#--> <!-- </iterate>--> <!-- </dynamic>--> </select> </sqlMap> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<!-- 动态查询1--><select id="getOrders1" parameterClass="com.air.Account" resultClass="com.air.Product"> SELECT orders.id as id, orders.product as product, orders.customer as customer FROM orders <dynamic prepend=" WHERE "> <isNull property="username">customer IS NOT NULL</isNull> <isNotNull property="username"> orders.customer=#username# </isNotNull> </dynamic></select>
<!-- 动态查询2--><select id="getOrders2" parameterClass="com.air.Account" resultClass="com.air.Product"> SELECT o.id as id, o.product as product, o.customer as customer FROM orders o <isNotNull property="username"> INNER JOIN user_account a ON o.customer=a.username </isNotNull> <dynamic prepend="where "> <isNotEmpty property="groupname" prepend="and " open="(" close=")"> a.groupname=#groupname# </isNotEmpty> </dynamic></select>
<!-- 动态查询3--><select id="getOrders3" parameterClass="com.air.Product" resultClass="com.air.Product"> SELECT orders.id as id, orders.product as product, orders.customer as customer FROM orders <dynamic prepend="WHERE "> <isNotEmpty property="product" prepend="and" open="(" close=")" removeFirstPrepend="true"> product=#product# </isNotEmpty> <isNotEmpty property="customer" prepend="and" open="(" close=")"> customer=#customer# </isNotEmpty> </dynamic></select><!-- 动态查询4--><select id="getOrders4" parameterClass="com.air.Product" resultClass="com.air.Product"> SELECT * FROM orders <dynamic prepend="WHERE "> <iterate property="keywords" open="(" close=")" conjunction="OR"> product=#keywords[]# </iterate> </dynamic><!-- <dynamic prepend="WHERE product IN ">--><!-- <iterate property="keywords" open="(" close=")" conjunction=","> --><!-- #keywords[]#--><!-- </iterate>--><!-- </dynamic>--></select></sqlMap>