java无效的列索引,mybatis jdbc select查询不工作引发无效的列索引

在使用Mybatis 3.0进行SQL查询时,遇到因参数类型设置错误导致的异常,涉及personName和customerID的IN参数。本文将分析问题并提供解决办法,帮助读者理解jdbcType选择和异常原因。
摘要由CSDN通过智能技术生成

我在Mybatis第3版中有以下问题。请帮助我查找此问题。

Java代码:

@Select("SELECT A.PERSON_ID,A.PERSON_ADDRESS, C.CUSTOMER_NAME," +

" B.CUSTOMER_DOB," +

" FROM PERSON A, CUSTOMER B, CUSTOMER_DETAILS C" +

" WHERE A.CUSTOMER_ID=C.CUSTOMER_ID" +

" AND A.CUSTOMER_ID=B.CUSTOMER_ID (+)" +

" AND C.PERSON_NAME='#{personName, jdbcType=VARCHAR, mode=IN, javaType=String}'" +

" AND C.CUSTOMER_ID='#{customerID, jdbcType=VARCHAR, mode=IN, javaType=String}'")

@Results(value = {

@Result(property = "personId", column = "PERSON_ID"),

@Result(property = "personAddress", column = "PERSON_ADDRESS"),

@Result(property = "customerName", column = "CUSTOMER_NAME"),

@Result(property = "customerDOB", column = "CUSTOMER_DOB")

})

List getPersonCustomerByID(@Param("personName") String personName,@Param("customerID") String customerID);

异常跟踪:

nested exception is org.apache.ibatis.type.TypeException:

Could not set parameters for mapping: ParameterMapping{property='personName', mode=IN, javaType=class java.lang.String, jdbcType=VARCHAR,

numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}.

Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType VARCHAR .

Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Invalid column index

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值