zoukankan      html  css  js  c++  java
  • MyBatis3错误:Parameter 'id' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]或者Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]

    这个问题涉及到MyBatis3在使用select节点查询时传递多个参数的问题。问题分析如下:

    1、如果是单个查询一般是这样配置:

        <select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
            select user.id,user.userName,user.userAddress,article.id as aid,article.title,article.content from user,article where user.id=article.userid and user.id=#{id}
        </select>
    public List<Article> getUserArticles(int id);

    2、如果使用了多个参数之后,我们一般是这样配置:

        <select id="getUserArticlesByLimit" parameterType="int" resultMap="resultUserArticleList">
            select user.id,user.userName,user.userAddress,article.id as aid,article.title,article.content from user,article where user.id=article.userid and user.id=#{id} limit #{start},#{limit}
        </select>
    public List<Article> getUserArticlesByLimit(int id,int start,int limit);

    而以上写法有两个错误的地方,第一个是parameterType是要去掉的,虽然这里的参数全部都是int类型,如果涉及多个类型那就必须去掉;第二个是#{id}...及后面的参数写法也是错误的,因为在MyBatis3中不会识别这样的参数,所以应该改成#{arg0},{arg1}这样的形式。

    所以,修改后的配置如下:

        <select id="getUserArticlesByLimit" resultMap="resultUserArticleList">
            select user.id,user.userName,user.userAddress,article.id as aid,article.title,article.content from user,article where user.id=article.userid and user.id=#{arg0} limit #{arg1},#{arg2}
        </select>

    通过以上修改完后,错误解决

    3、当然,这个涉及到了MyBatis3的多参数查询方法,还有很多解决方法,比如使用HashMap类型、对参数进行@Param注解、使用对象传输等的参数进行装载,详细参考:http://www.cnblogs.com/mingyue1818/p/3714162.html

  • 相关阅读:
    phpstorm实现分屏展示代码
    Yii2 JWT
    JSON Web Token 入门教程
    Linux常用命令: zip、unzip 压缩和解压缩命令
    yii2表单提交CSRF验证
    解决jquery click事件执行两次
    《Inside C#》笔记(十二) 委托与事件
    MVC与单元测试实践之健身网站(七)-日程与打卡
    《Inside C#》笔记(十一) 运算符重载
    MVC与单元测试实践之健身网站(七)-添加计划
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7056256.html
Copyright © 2011-2022 走看看