由於公司要求,最近從.net向java 轉,然后過程中遇到各種奇葩問題,特在此隨記一番。
場景:一個方法中有兩個參數,一個List的集合,一個int 類型的參數,最初我在xml的sql參數,無論定義成List還是int都報錯,其實仔細一想就能明白,接口方法中定義了兩個類型的參數,所以你XML中的參數類型無論定義成什么都是不對的。
原始寫法:
//========================這個例子是原始錯誤寫法的例子===========Start
void batchUpdateUrgetntStatusNew(List<String> li,int Priority);
XML中:
<!-- 修改借款工單優先級 -->
<update id="batchUpdateUrgetntStatusNew" parameterType="java.util.List">
update 表名
<set>
PRIORITY=#{Priority,jdbcType=INTEGER},
MODIFIEDON=NOW()
</set>
where DELETE_STATUS=0 and LOANEE_TYPE=0
and LOANEE_APPLY_ID in
<foreach collection="li" item="item" index="index" separator=","
open="(" close=")">
#{item}
</foreach>
</update>
//========================這個例子是原始錯誤寫法的例子===========End
后來問了一下公司的同事,同事告訴我這樣的情況XML中就不要再定義參數類型了,然后改了一下,運行調試ok。
下面是改后的例子
//例子: @Param("li") 為參數起別名,xml可直接使用別名
void batchUpdateUrgetntStatusNew(@Param("li")List<String> li,@Param("Priority")int Priority);
XML:中則不用聲明參數類型,parameterType="java.util.List"
<!-- 修改借款工單優先級 -->
<update id="batchUpdateUrgetntStatusNew">
update 表名
<set>
PRIORITY=#{Priority,jdbcType=INTEGER},
MODIFIEDON=NOW()
</set>
where DELETE_STATUS=0 and LOANEE_TYPE=0
and LOANEE_APPLY_ID in
<foreach collection="li" item="item" index="index" separator=","
open="(" close=")">
#{item}
</foreach>
</update>
