프로젝트 개발 중에 MyBatis Dynamic Query를 수행 할 때 문제가 발생했습니다. MySQL이 퍼지 쿼리처럼 수행 할 때 영어를 입력하여 결과를 정상적으로 검색 할 수 있지만 중국어에 입력하여 얻은 결과는 비어 있습니다.
GET를 사용하여 요청되므로 중국어가 차지하지 않기 위해 콘솔이 요청 매개 변수를 수신 한 후 중국어가 한 번 인코딩됩니다.
try {realName = new String (realName.getBytes ( "gbk"), "utf-8");} catch (unsupportedencodingException Exception) {logger.error ( "lealname 오류가 UTF-8 인코딩을 수행하는 동안 발생했습니다." + exception.toString ());MyBatis 동적 SQL 매핑, 특정 SQL은 다음과 같습니다.
먼저 퍼지 쿼리를 사용하여 영어를 검색하십시오. 프로젝트를 시작하고 영어 "테스트"를 입력하면 영어 콘텐츠에 따라 검색하여 얻은 결과는 다음과 같습니다.
SQL이 정상적으로 실행된다는 것을 알 수 있습니다. "테스트"를 사용하여 2 개의 결과를 검색하면 데이터베이스의 해당 필드의 내용은 Zhang San Test02 및 Zhang San Test입니다. 일반적으로 중국인 "Zhang"을 입력하면이 두 데이터를 쿼리 할 수도 있습니다. 퍼지 쿼리를 사용하여 중국어를 검색해 봅시다. 프로젝트를 시작하고 중국인 "Zhang"을 입력하면 검색 결과는 다음과 같습니다.
여기에서 검색된 결과는 0 레코드이며, 조건의 중국 내용이 차단되지 않으며 이는 예상되는 것과 다릅니다. 동일한 SQL 문을 sqlyog에 복사하면 정상적인 결과가 발생할 수 있습니다.
SQLServer를 사용할 때는 그러한 문제가 없었습니다. 이것은 이번에 MySQL을 사용하여 일어났습니다. MyBatis가 데이터 소스 환경을 구성 할 때 SQLServer 및 MySQL 구성의 내용이 다르다고 의심됩니다. 관련 콘텐츠를 신중하게 비교하고 온라인으로 검토 한 후 MySQL이 중국어를 검색 할 때 JDBCURL 이후에 인코딩 형식을 지정하려면 매개 변수 auseUnicode = true & characterencoding = utf-8을 추가해야한다는 것을 알았습니다.
완전한 URL :
jdbc : mysql : //127.0.0.1 : 3306/fanyl_web? useUnicode = true & characterencoding = utf-8
MySQL의 JDBCURL을 수정 한 후 프로젝트를 시작하고 중국 "Zhang"을 계속 입력하십시오. 검색 결과는 다음과 같습니다.
총 3 개의 결과가 검색되었습니다. 이 시점에서 MyBatis가 MySQL을 사용하여 퍼지 쿼리를 수행 할 때 중국어를 검색 할 수없는 문제는 해결되었습니다.
또한 MySQL의 JDBCURL의 몇 가지 공통 매개 변수 설명 :
위는 내가 당신에게 소개 한 것입니다. MyBatis를 사용하여 MySQL 퍼지 쿼리를 사용할 때 결과를 검색 할 수없는 경우 어떻게해야합니까? 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!