java mybatis 框架下多種類型的參數傳入到xml問題


  由於公司要求,最近從.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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM