Mybatis获取接口中string类型参数问题(一)

Preparing: select max(cast(substring(certificat0_.certificateNo, 11, 6) as signed)) as col_0_0_ from u_usercert_tab certificat0_ WHERE certificat0_.certificateNo like '?%'

 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4bb84e56] 

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='certNum', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

接口

int getCertificateNoByNum( String certNum);

mapper.xml

<select id="com.ulearning.ulms.portal.dao.CertificateDao.getCertificateNoByNum" parameterType="java.lang.String" resultType="Integer">
    select max(cast(substring(certificat0_.certificateNo, 11, 6) as signed)) as col_0_0_ from u_usercert_tab certificat0_
    <where>
        <if test="_parameter != null">
             and certificat0_.certificateNo like '#{certNum}%'
        </if>
     </where>
</select>

报开始的错误。下面进行修改:

接口中指定参数名称:

int getCertificateNoByNum(@Param(value = "certNum") String certNum);

修改mapper.xml中字符串用concat函数拼接

<select id="com.ulearning.ulms.portal.dao.CertificateDao.getCertificateNoByNum" parameterType="java.lang.String" resultType="Integer">
      select max(cast(substring(certificat0_.certificateNo, 11, 6) as signed)) as col_0_0_ from u_usercert_tab certificat0_
      <where>
          <if test="_parameter != null">
              and certificat0_.certificateNo like concat(#{certNum},'%')
          </if>
      </where>
</select>





                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值