org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found.

virgosnail發表於2019-05-08

1. 情景重現

1.1 Mapper 程式碼

public interface DeviceFileInfoVOMapper {

    List<QueryFileDTO> selectVideoByField(String devId, Long chl,  Date startTime,  Date endTime, Pagination pagination);

}

1.2 XML 程式碼

  <select id="selectVideoByField"  resultMap="videoFileMap">
    SELECT file_id
    FROM t_device_file_info WHERE 1=1
    <trim>
      <if test="devId != null">
        AND dev_id=#{devId,jdbcType=VARCHAR}
      </if>
      <if test="chl != null">
        AND chl=#{chl,jdbcType=BIGINT}
      </if>
      <if test="startTime != null">
        AND start_time &gt;= #{startTime,jdbcType=TIMESTAMP}
      </if>
      <if test="endTime != null">
        AND end_time &lt;= #{endTime,jdbcType=TIMESTAMP}
      </if>
    </trim>
  </select>

1.3 錯誤詳情

2. 解決方法

  在 Mapper 中定義的方法引數新增 @Param 註解,@Param 註解的值和xml中引用的引數名一致即可。

  @Param("devId"),則在xml中使用 #{devId}

public interface DeviceFileInfoVOMapper {

    List<QueryFileDTO> selectVideoByField(@Param("devId") String devId, @Param("chl") Long chl, @Param("startTime")  Date startTime, @Param("endTime") Date endTime, Pagination pagination);

}

相關文章