springboot mybatis常见异常及处理方法

1.in导致的异常

 Data truncation: Truncated incorrect DOUBLE value:

异常过程:

mapper接口如下:

public int updateBatchId(@Param("batchId")String batchId,@Param("idStr")String idStr);

xml中sql如下:

    
        update pdm_description_error_msg set batch_id = #{batchId},status = "1",process_num = process_num +1
        where id in (#{idStr})
    

原因分析:

mybatis中in不能这样写,需要使用foreach,不然就会报如上的错误。

解决办法:(这里的idStr是以逗号分隔的,形式是这样的:1,2,3,4)

    
        update pdm_description_error_msg set batch_id = #{batchId},status = "1",process_num = process_num +1
        where id in
        
            '${item}'
        
    

异常总结

之前写sql时是使用注解的方式写的,通过那种方式,在java代码中是可以直接使用以逗号分隔的字符串的,例子如下:

    public String updateBatchId(String batchId,String idStr){
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("update pdm_error_msg set batch_id = '" + batchId + "',status=1,process_num=process_num+1 where " +
                " (status=0 or status = 3) and id in ("+idStr+")");
        return stringBuilder.toString();
    }

这个是在java中直接拼接的sql可以,可以直接使用带逗号的字符串,在xml不行。

 

你可能感兴趣的:(springboot mybatis常见异常及处理方法)