zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    Redundant Paths 分离的路径(边双连通分量)
    bzoj2208 [Jsoi2010] 连通数(tarjan点双连通分量 // dfs)
    [bzoj3331] [BeiJing2013] 压力(tarjan 点双连通分量)
    [ BZOJ1123 ] BLO(tarjan点双连通分量)
    bitset小总结
    牛客328B Rabbit的工作(1)
    # Codeforces Round #529(Div.3)个人题解
    HDU5957 Query on a graph(拓扑找环,BFS序,线段树更新,分类讨论)
    istringstream()函数的用法
    codeforces 1077F1
  • 原文地址:https://www.cnblogs.com/yangjinwang/p/5843103.html
Copyright © 2011-2022 走看看