• Parameter '0' not found.Available parameters are [arg1, arg0, param1, param2]的解决方法


    在ssm框架中,mybatis+spring操作数据库报错:

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'category' not found. Available parameters are [arg1, arg0, param1, param2]

    其实就是方法参数名,到xml文件识别不了的问题

    出错的代码:
    mapper

    //通过书的种类或者书名模糊查询,查找相应的图书总数
      public int queryProductsCount(String name, String category);
    

    mapper.xml

    <!--通过书的种类或者书名模糊查询,查找相应的图书总数-->
      <select id="queryProductsCount" resultType="int">
          select count(1) as count from itcaststore.products
          <where>
              <if test="category != null">
                  category like concat('%',#{category},'%')
              </if>
              <if test="name != null">
                  and name like concat('%',#{name},'%')
              </if>
          </where>
      </select>
    

    错误原因
    mybatis的Mapper接口方法传入了多个参数

    还要注意:parameterType是要去掉的,虽然这里的参数全部都是String类型,如果涉及多个类型那就必须去掉

    • 解决方法一:
      使用#{arg0}和#{arg1}来告诉mybatis,当前变量使用哪个参数的值
     <select id="queryProductsCount" resultType="int">
            select count(1) as count from itcaststore.products
            <where>
                <if test="category != null">
                    category like concat('%',#{arg0},'%')
                </if>
                <if test="name != null">
                    and name like concat('%',#{arg1},'%')
                </if>
            </where>
        </select>
    

    但是因为这里有:<if test="category != null">和<if test="name != null">,所以此法对于这种特殊情况无解。

    • 解决方法二:(不修改mapper.xml)
      使用注解@Param
    public int queryProductsCount(@Param("name") String name, @Param("category")String category);
    
    • 解决方法三:
      HashMap类型作为传入类型(不修改mapper.xml)
    public int queryProductsCount1(Map<String,String> map);
    



    微信扫一扫,关注我的微信公众号【Louis军】,获取更多及时更新。

    如想交个朋友,可加微信:hunter2881(备注:博客园)


  • 相关阅读:
    Objective-C之NSArray(数组)默认排序与自定义排序
    Objective-C学习笔记之for( int )机制
    OC之NSString、NSMutableString学习笔记 常用方法
    换行回车的区别 2018-10-30
    Python头部2行 #!/usr/bin/python 和 #!/usr/bin/env 的区别 以及编码方式的指定 2018-10-23
    旧版Windows 睡眠与休眠 2018-10-18
    手机尺寸像素 PPI 2018-10-17
    VMvare 虚拟机扩容 2018-10-11
    批量判断网址能否访问 2018-10-04
    字符串的 strip()方法 2018-10-04
  • 原文地址:https://www.cnblogs.com/junzi2099/p/15662090.html
Copyright © 2020-2023  润新知