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问题的主要内容,如果未能解决你的问题,请参考以下文章