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

无法设置映射参数ParameterMapping{property,modeIN,javaTypeclass java.util.date

邹晟睿
2023-03-14

嵌套异常为org.apache.ibatis.type.TypeException:无法为映射设置>Parameters:ParameterMapping{property='sign',mode=in,>javatype=class java.util.date,jdbctype=null,numericscale=null,>resultmapid='null',jdbctypename='null',expression='null'}。原因:org.apache.ibatis.type.TypeException:使用JdbcType null为参数#4设置非null时出错。尝试为此参数设置不同的JdbcType或不同的配置属性。原因:java.sql.sqlexception:参数索引超出范围(4>参数数,即3)。

XML

    <select id="selectSignRecordList" parameterType="SignRecord" resultMap="SignRecordResult">
        <include refid="selectSignRecordVo"/>
        <where>  
            <if test="id != null  and id != '' "> and id_ = #{id}</if>
             <if test="promiseId != null  and promiseId != '' "> and promise_id = #{promiseId}</if>
             <if test="userId != null  and userId != '' "> and user_id = #{userId}</if>
             <if test="signIn != null">
              and sign_in =#{signIn,jdbcType=DATE}
                 --and sign_in  = date_format(  #{signIn}  , '%Y-%m-%d' )
--                  AND date_format(sign_in,'%y%m%d') = date_format(#{signIn},'%y%m%d')
--                  <![CDATA[   and DATE_FORMAT(sign_in, '%Y-%m-%d')=  DATE_FORMAT(#{signIn}, '%Y-%m-%d')   ]]>
--                  AND date(sign_in) = date(#{signIn,jdbcType=DATE})
              </if>
             <if test="signStatus != null  and signStatus != '' "> and sign_status = #{signStatus}</if>
             <if test="createBy != null  and createBy != '' "> and create_by = #{createBy}</if>
             <if test="createTime != null "> and create_time = #{createTime}</if>
             <if test="updateBy != null  and updateBy != '' "> and update_by = #{updateBy}</if>
             <if test="updateTime != null "> and update_time = #{updateTime}</if>
             <if test="remark != null  and remark != '' "> and remark = #{remark}</if>
         </where>
    </select>

登录名为java.util.date

共有1个答案

范凡
2023-03-14

最可能的问题是--是SQL中的注释开头,但mybatis并不知道这一点。这一行(以及所有类似的):

--           AND date(sign_in) = date(#{signIn,jdbcType=DATE})

导致一个问题,因为mybatis试图在此处准备好的语句中设置参数,但您的RDBMS忽略了查询的这一部分,因此该参数不存在。因此会出现错误消息,即参数的实际数量(DB已知)小于客户机(mybatis)试图设置的数量。

要解决此问题,请使用xml注释而不是SQL注释,如下所示:

    <select id="selectSignRecordList" parameterType="SignRecord" resultMap="SignRecordResult">
    <include refid="selectSignRecordVo"/>
    <where>  
        <if test="id != null  and id != '' "> and id_ = #{id}</if>
         <if test="promiseId != null  and promiseId != '' "> and promise_id = #{promiseId}</if>
         <if test="userId != null  and userId != '' "> and user_id = #{userId}</if>
         <if test="signIn != null">
          and sign_in =#{signIn,jdbcType=DATE}
             <!-- and sign_in  = date_format(  #{signIn}  , '%Y-%m-%d' )
              AND date_format(sign_in,'%y%m%d') = date_format(#{signIn},'%y%m%d')
              <![CDATA[   and DATE_FORMAT(sign_in, '%Y-%m-%d')=  DATE_FORMAT(#{signIn}, '%Y-%m-%d')   ]]>
              AND date(sign_in) = date(#{signIn,jdbcType=DATE})
             --> 
          </if>
         <if test="signStatus != null  and signStatus != '' "> and sign_status = #{signStatus}</if>
         <if test="createBy != null  and createBy != '' "> and create_by = #{createBy}</if>
         <if test="createTime != null "> and create_time = #{createTime}</if>
         <if test="updateBy != null  and updateBy != '' "> and update_by = #{updateBy}</if>
         <if test="updateTime != null "> and update_time = #{updateTime}</if>
         <if test="remark != null  and remark != '' "> and remark = #{remark}</if>
     </where>
</select>
 类似资料:
  • 问题内容: 我试图按如下所示设置按钮的可见性: 但是我得到了错误: 在通话时 我不知道该如何解决。我知道这是期望给定的一组值,但我所知道的只是将其传递给它。在这里可以做什么? 问题答案: 当您知道自己在做什么时,可以使用 例如,

  • 如果我用替换它,它也可以工作,那么有人能告诉我使用的好处吗? 使用编写代码: 我可以看到我们可以在中保留参数的顺序,但在我的项目中这并不重要...因此,如果订单很重要,我仍然可以使用 因此,看起来用HashMap设置一些参数根本不是一个好主意...所以我暂时删除了公认的答案,等待关于这一点的更多解释...我有合适的转换器(),我的意思是如果我使用多值地图,我就没有异常,所以HashMap就是问题所

  • 我试图用phoenix映射一个hbase表,但结果表在列中给出了null值和整数值。 怎么了?

  • 我想在sql语句中使用一个名为tags的参数: 我通过以下方式传递参数并执行语句: 如果我将语句更改为: 它抛出错误: 类org.springframework.jdbc.badsqlgrammareXception PreparedStatementCallback;错误的SQL语法[SELECT*FROM reply WHERE(?,?)@>array[2293,2294];嵌套异常是org.

  • 所以我试图建立一个简单的网站,这样工作。 我在这里怎么办?而不是扩展另一个HTTPServlett 谢谢你抽出时间

  • Mybatis抛出一个错误,该错误表示设置参数有问题。会出什么问题?我测试了SQL查询,它很好。我在用graddle和Spring。 控制器 表