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>