java mybatis 框架下多种类型的参数传入到xml问题

Posted 帅就一个字却跟我一辈子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

以上是关于java mybatis 框架下多种类型的参数传入到xml问题的主要内容,如果未能解决你的问题,请参考以下文章

mybatis仅传入一个String类型参数报错

初识MyBatis框架

MyBatis之传入参数

MyBatis之传入参数parameterType

Java--MyBatis传入参数parameterType

Mybatis 多个参数传入的多种方法