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 >= #{startTime,jdbcType=TIMESTAMP} </if> <if test="endTime != null"> AND end_time <= #{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); }