Error de formato de recuperación de fecha de Mybatis

Insertar descripción de la imagen aquí

Recurrencia del problema

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

análisis del problema

Parece que el problema se debe a que al realizar la consulta, se intenta comparar la fecha (start_time) en la base de datos con la cadena (startTime), lo que da como resultado "java.lang.IllegalArgumentException: comparación no válida: java.util.Date y java.lang. Error de cadena.

——————原Mybatis语句
 <if test="startTime != null and startTime != '' ">and chat.start_time = #{startTime}</if>
——————修复后Mybatis语句
   <if test="startTime != null "> and DATE_FORMAT(chat.start_time, '%Y-%m-%d')=DATE_FORMAT( #{startTime}, '%Y-%m-%d')</if>

Reflexión del problema

El problema encontrado se debió a que MyBatis intentó comparar la fecha ( chat.start_time) en la base de datos con la cadena ( ), lo que resultó en el error "java.lang.IllegalArgumentException: comparación no válida: java.util.Date y java.lang.String". Resolvió con éxito el problema startTimecomparando startTimeel parámetro directamente con la fecha en la base de datos y usando la función para formatear ambos en la misma cadena de fecha. DATE_FORMATEsta modificación funciona porque garantiza que ambos tengan el mismo formato al comparar, por lo que ya no se generan excepciones de discrepancia de tipos. Ahora la consulta se comparará chat.start_timecon startTimela cadena de fecha del parámetro, lo cual es un enfoque viable siempre que los formatos de los dos coincidan.

Supongo que te gusta

Origin blog.csdn.net/weixin_53742691/article/details/132756722
Recomendado
Clasificación