当前位置: 首页 > 知识库问答 >
问题:

MyBatis参数索引超出范围

鲁洋
2023-03-14
    (select * from table1 where field1 like '%"name":"appname"%' limit 1)
    union all
    (select * from table2 where field1 like '%"name":"appname"%' limit 1)
    limit 1

所以我创建了这个注释:

@Select({
    "(select * from table1 where field1 like '%\"name\":\"#{name,jdbcType=VARCHAR}\"%' limit 1)",
    "union all",
    "(select * from table2 where field1 like '%\"name\":\"#{name,jdbcType=VARCHAR}\"%' limit 1)",
    "limit 1"
})
@Results({
    @Result(column="ID", property="id", jdbcType=JdbcType.INTEGER, id=true)
})
Object hasName(@Param("name")String name);

但当我运行它时,我得到了这个异常

无法为映射设置参数:ParameterMapping{Property='name',mode=in,javatype=class java.lang.String,JDBCType=varchar,NumericScale=null,ResultMapid='null',JDBCTypeName='null',Expression='null'}.原因:org.apache.ibatis.type.TypeException:使用JdbcType VARCHAR为参数#1设置非空时出错。尝试为此参数设置不同的JdbcType或不同的配置属性。原因:java.sql.sqlexception:参数索引超出范围(1>参数数,为0)。

共有1个答案

姜博
2023-03-14

我决定将部分查询从

field1 like '%\"name\":\"#{name,jdbcType=VARCHAR}\"%'

field1 like #{name,jdbcType=VARCHAR}

并在Java中更改参数名

parameter = "%\"name\":\"" + parameter + "\"%";
 类似资料:
  • 问题内容: 关闭。 这个问题需要调试细节。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 验证我选择的选择组合框后,我无法将其插入数据库中。Tomcat给出以下错误: java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。 这是怎么引起的,我该如何解决? 问题答案: 当您在上调用任何方法时,都会收到此错误

  • 问题内容: 我已经开始处理我的第一个Java程序,它是一个简单的计算器,但是我得到一个错误,声称我的数组超出范围。我尝试对其进行调试,以了解这样做的原因和原因,并遵循纸上的代码,两者均显示了我期望和期望的结果。因此,我看不到问题出在哪里。代码不完整。 根据调试器,此行出现错误: 这是我当前拥有的代码的主要部分: 这是我收到的错误消息: 问题答案: 当等于中的最后一个元素索引时,则将大于最后一个元素

  • 你好,stackoverflow的好人们!我有一个奇怪的问题,我不明白。我要发布我的两个有问题的方法: 另一个: 所以,我正在根据我在网上找到的一些代码制作一个数独解算器。现在,当我试着调试程序时,我可以很好地检查一些行(并且它按照预期工作),但是一旦程序第一次在方法“resi”中调用“next”方法,它就会崩溃,出现数组索引越界异常。如果我只是尝试在不进行调试的情况下运行该程序,那么在同一方法调

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 我有一个bean,我用它作为传输对象。bean的类定义为- 我正在使用这个bean,在带有Model属性注释的Spring控制器中。对于JSP,我有JSTL。我已经用这样的字段填充了JSP。 当我提交表单时,我得到Java . lang . indexoutofboundsexception:Index:0,Size: 0。

  • 问题内容: 在Java / MariaDb中使用prepareStatement,如以下函数所示 我收到错误消息: java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。 错误行号指向行 问题答案: 正如评论中提到的,您应该删除?中的引号。 另外,在中,应为正。从1开始循环计数。 总结一下: