当前位置:   article > 正文

Parameter index out of range (2 > number of parameters, which is 1【已解决】

Parameter index out of range (2 > number of parameters, which is 1【已解决】

1、SysLogMapper.xml添加注释导致的

    <!--定义一个查询方法,用于获取日志列表-->
    <!--方法ID为getLogList,返回类型com.main.server.api.model.SysLogModel,参数类型为com.main.server.api.dto.LogDto-->
    <select id="getLogList" resultType="com.main.server.api.model.SysLogModel" parameterType="com.main.server.api.dto.LogDto">
        /*查询语句,通过join操作查询sys_log和sys_user表的数据*/
        /*根据log_user_id和id关联sys_log和sys_user表,获取用户名*/
        select a.*,b.real_name as user_name from sys_log a join sys_user b on a.log_user_id = b.id
        /*使用where子句过滤查询条件*/
        <where>
            /*如果LogDto中的userId不为空,则添加过滤条件b.id = #{userId}*/
            <if test="userId != null">
                b.id = #{userId}
            </if>
            /*如果LogDto中的logMsg不为空,则添加过滤条件log_msg like concat('%',#{logMsg},'%')*/
            /*使用concat函数和like操作符实现模糊查询*/
            <if test="logMsg != null and logMsg.trim() != ''">
                and log_msg like concat('%',#{logMsg},'%')
            </if>
        </where>
        /*按照id降序排序排列查询结果*/
        order by id desc
    </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这里插入图片描述

java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='userId', mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 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 (2 > number of parameters, which is 1).
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='userId', mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 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 (2 > number of parameters, which is 1).
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
  • 1
  • 2
  • 3
  • 4
Caused by: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='userId', mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 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 (2 > number of parameters, which is 1).
	at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:89)
	at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:93)
  • 1
  • 2
  • 3
Caused by: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 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 (2 > number of parameters, which is 1).
	at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:55)
	at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:87)
	... 59 more
  • 1
  • 2
  • 3
  • 4
Caused by: java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
  • 1
  • 2
  • 3
  • 4

2、解决方法

把注释去掉

    <!--定义一个查询方法,用于获取日志列表-->
    <!--方法ID为getLogList,返回类型com.main.server.api.model.SysLogModel,参数类型为com.main.server.api.dto.LogDto-->
    <select id="getLogList" resultType="com.main.server.api.model.SysLogModel" parameterType="com.main.server.api.dto.LogDto">
        /*查询语句,通过join操作查询sys_log和sys_user表的数据*/
        /*根据log_user_id和id关联sys_log和sys_user表,获取用户名*/
        select a.*,b.real_name as user_name from sys_log a join sys_user b on a.log_user_id = b.id
        /*使用where子句过滤查询条件*/
        <where>

            <if test="userId != null">
                b.id = #{userId}
            </if>

            <if test="logMsg != null and logMsg.trim() != ''">
                and log_msg like concat('%',#{logMsg},'%')
            </if>
        </where>
        /*按照id降序排序排列查询结果*/
        order by id desc
    </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

想加注释也可以,可以用下面这种方式:

    <!--定义一个查询方法,用于获取日志列表-->
    <!--方法ID为getLogList,返回类型com.main.server.api.model.SysLogModel,参数类型为com.main.server.api.dto.LogDto-->
    <select id="getLogList" resultType="com.main.server.api.model.SysLogModel" parameterType="com.main.server.api.dto.LogDto">
        /*查询语句,通过join操作查询sys_log和sys_user表的数据*/
        /*根据log_user_id和id关联sys_log和sys_user表,获取用户名*/
        select a.*,b.real_name as user_name from sys_log a join sys_user b on a.log_user_id = b.id
        /*使用where子句过滤查询条件*/
        <where>
            <!--如果LogDto中的userId不为空,则添加过滤条件b.id = #{userId}-->
            <if test="userId != null">
                b.id = #{userId}
            </if>
            <!--如果LogDto中的logMsg不为空,则添加过滤条件log_msg like concat('%',#{logMsg},'%')-->
            <!--使用concat函数和like操作符实现模糊查询-->
            <if test="logMsg != null and logMsg.trim() != ''">
                and log_msg like concat('%',#{logMsg},'%')
            </if>
        </where>
        /*按照id降序排序排列查询结果*/
        order by id desc
    </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3、总结

在xml中,注释尽量用下面这种的

<!-- -->
  • 1
这种注释形式被称为 HTML 注释。它用于在 HTML 代码中添加注释,注释的内容不会在网页中显示,仅作为开发人员的备注或用于临时禁用部分 HTML 代码。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/907586
推荐阅读
相关标签
  

闽ICP备14008679号