ibatisの中でisNull、isNotNullとisEmpty、isNotEmptyは区別します。
isNull, isNotNull isEmpty, isNotEmpty
iBATISでは、isNullはパラメータがNullかどうかを判定するために使用され、isNotNullは反対です。isEmptyはパラメータがNullか空かどうかを判断します。一つの条件を満たすと、そのtrue isNotEmptyは反対です。パラメータがNullでもないし、空でもないなら、trueです。
判断の後に対応する表現を行います。
次のコード:
<select id="getCustomerRegNum" resultClass="int" parameterClass="QueryCustomerCondition">
select count(cus_id) from cus_customer_tbl
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="cusWebFrom">
( CUS_CUSTOMER_TBL.CUS_WEB_FROM LIKE '%$cusWebFrom$%')
</isNotEmpty>
<isNotEmpty prepend="AND" property="cusWebAgent">
( CUS_CUSTOMER_TBL.CUS_WEB_AGENT LIKE '%$cusWebAgent$%')
</isNotEmpty>
</dynamic>
</select>
パラメータが入ってきた時には、cus WebFormは入ってこないです。 cus WebAgentの場合、SQL文は以下の通りです。select count from cus_customer_tbl WHERE (CUSUCUSTOMER TBL.C.USWEBOM LIKE'%baidu')
XMLコードが<isNotNull>で構成されている時(彼らの違いに注意)、
<select id="getCustomerRegNum" resultClass="int" parameterClass="QueryCustomerCondition">
select count(cus_id) from cus_customer_tbl
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="cusWebFrom">
( CUS_CUSTOMER_TBL.CUS_WEB_FROM LIKE '%$cusWebFrom$%')
</isNotNull>
<isNotNull prepend="AND" property="cusWebAgent">
( CUS_CUSTOMER_TBL.CUS_WEB_AGENT LIKE '%$cusWebAgent$%')
</isNotNull>
</dynamic>
</select>
同じように、パラメータのcus WebFormが入ってきた時には入ってきません。 cus WebAgentの場合、SQL文は以下の通りです。select count from cus_customer_tbl WHERE (CUSUCUSTOMER TBL.C.USWEBOM LIKE'%baidu') AND (CUSCUSTOMERUTBL.
Sql文から彼らの違いが分かります。。。。。