以下两段代码等价:
段落1
<insert id="addPaBonusInputItemInfo" parameterClass="linkMap"> <![CDATA[ INSERT INTO BN_PARAM_ITEM ( PARAM_ITEM_NO, PARAM_ITEM_ID, DATA_TYPE, CREATE_DATE, CREATED_BY, ACTIVITY, DESCR ) VALUES( #NO:VARCHAR#, #ITEM_ID:VARCHAR#, #DATA_TYPE:VARCHAR#, SYSDATE, #CREATED_BY:VARCAHR#, 1, #DESCR:VARCHAR# ) ]]> </insert>
段落2
<insert id="addPaBonusInputItemInfo" parameterClass="linkMap"> INSERT INTO BN_PARAM_ITEM <![CDATA[ ( ]]> <dynamic prepend=" "> <isNotEmpty prepend=",">PARAM_ITEM_NO</isNotEmpty> <isNotEmpty prepend=",">PARAM_ITEM_ID</isNotEmpty> <isNotEmpty prepend=",">DATA_TYPE</isNotEmpty> <isNotEmpty prepend=",">CREATE_DATE</isNotEmpty> <isNotEmpty property="CREATED_BY" prepend=",">CREATED_BY</isNotEmpty> <isNotEmpty prepend=",">ACTIVITY</isNotEmpty> <isNotEmpty prepend=",">DESCR</isNotEmpty> </dynamic> <![CDATA[ ) VALUES ( ]]> <dynamic prepend=" "> <isNotEmpty property="NO" prepend=",">#NO#</isNotEmpty> <isNotEmpty property="ITEM_ID" prepend=",">#ITEM_ID#</isNotEmpty> <isNotEmpty property="DATA_TYPE" prepend=",">#DATA_TYPE#</isNotEmpty> <![CDATA[ , SYSDATE, ]]> <isNotEmpty property="CREATED_BY" prepend=",">#CREATED_BY#</isNotEmpty> </dynamic> <![CDATA[ 1 ]]> <isNotEmpty property="DESCR" prepend=",">#DESCR#</isNotEmpty> <![CDATA[ ) ]]> </insert>
两者差异
如果输入参数:CREATED_BY 为NULL
第一段代码会报错
第二段则不会
SQL
INSERT INTO BN_PARAM_ITEM
(PARAM_ITEM_NO, PARAM_ITEM_ID, DATA_TYPE, CREATE_DATE, ACTIVITY, DESCR)
VALUES
(?, ?, ?, SYSDATE, 1, ?)
-- [124363, 2, NUMBER(14,4), 6]