Durante el desarrollo del proyecto, al hacer una consulta dinámica mybatis, encontré un problema: cuando MySQL realiza una consulta difusa, los resultados se pueden recuperar normalmente ingresando el inglés, pero los resultados obtenidos al ingresar a los chinos están vacíos.
Dado que se solicita el uso de GET, para asegurarse de que el chino no esté confuso, el idioma chino se codifica una vez después de que la consola reciba los parámetros de solicitud.
Pruebe {RealName = new String (RealName.getBytes ("GBK"), "UTF-8");} Catch (UnsupportedEncodingEdingException Exception) {logger.error ("El error de nombre real ocurrió al realizar la codificación UTF-8," + Exception.ToString ());}Mapeo SQL dinámico mybatis, el SQL específico es el siguiente:
Primero, use una consulta difusa para recuperar inglés. Inicie el proyecto, ingrese la "prueba" en inglés, y los resultados obtenidos al buscar de acuerdo con el contenido inglés son los siguientes:
Podemos ver que SQL se ejecuta normalmente. Usando "prueba" para recuperar 2 resultados, el contenido de los campos correspondientes en la base de datos son la prueba Zhang SAN Test02 y Zhang SAN. Normalmente, si ingresamos al "Zhang" chino, también podemos consultar estos dos datos. Intentemos usar una consulta difusa para recuperar chino. Inicie el proyecto, ingrese al "Zhang" chino, y los resultados de búsqueda son los siguientes:
Podemos ver que el resultado recuperado aquí son 0 registros, y el contenido chino de las condiciones no está confuso, que es diferente del esperado. Copiar la misma declaración SQL en SQLYOG puede dar lugar a resultados normales.
No había tal problema al usar SQLServer. Esto sucedió esta vez usando MySQL. Se sospecha que el contenido de las configuraciones SQLServer y MySQL era diferente cuando MyBatis configuró el entorno de fuente de datos. Después de una cuidadosa comparación y una revisión en línea del contenido relevante, descubrí que cuando MySQL busca en chino, necesito agregar el parámetro UseUnicode = True & CARACTERENCODING = UTF-8 después de JDBCURL para especificar el formato de codificación.
URL completa:
JDBC: mysql: //127.0.0.1: 3306/fanyl_web? UseUnicode = true & caracterSencoding = UTF-8
Después de modificar el JDBCurl de MySQL, inicie el proyecto y continúe ingresando al "Zhang" chino. Los resultados de la búsqueda son los siguientes:
Se recuperaron un total de 3 resultados. En este punto, el problema que mybatis no puede buscar chino cuando se usa mysql para realizar una consulta difusa se resolvió.
Además, varias descripciones de parámetros comunes en JDBCurl de MySQL:
Lo anterior es lo que te presenté. ¿Qué debo hacer si no puedo buscar resultados cuando uso mybatis para usar la consulta difusa mysql? Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!