Während der Projektentwicklung habe ich bei myBatis dynamischer Abfrage auf ein Problem gestoßen: Wenn MySQL wie Fuzzy -Abfrage durchführt, können die Ergebnisse normal durch Eingeben von Englisch abgerufen werden, aber die Ergebnisse, die durch Eingeben von Chinesen erzielt werden, sind leer.
Da es mit GET angefordert wird, um sicherzustellen, dass Chinesen nicht verstümmelt sind, wird die chinesische Sprache einmal codiert, nachdem die Konsole die Anforderungsparameter erhalten hat.
try {realname = new String (RealName.getBytes ("gbk"), "utf-8");} catch (unupportedenCodingException) {logger.Error ("Realname-Fehler, der während der Ausführung von UTF-8-Enckodierung," + exception.toString ();MyBatis Dynamic SQL Mapping, die spezifische SQL ist wie folgt:
Verwenden Sie zunächst Fuzzy -Abfrage, um Englisch abzurufen. Starten Sie das Projekt, geben Sie den englischen "Test" ein, und die Ergebnisse, die durch die Suche nach englischen Inhalten erzielt wurden, sind wie folgt:
Wir können sehen, dass SQL normal ausgeführt wird. Mit "Test" zum Abrufen von 2 Ergebnissen sind der Inhalt der entsprechenden Felder in der Datenbank Zhang San Test02 und Zhang SAN Test. Wenn wir in den chinesischen "Zhang" eingeben, können wir normalerweise auch diese beiden Daten abfragen. Versuchen wir, eine Fuzzy -Abfrage zu verwenden, um Chinesen abzurufen. Starten Sie das Projekt, geben Sie den chinesischen "Zhang" ein, und die Suchergebnisse sind wie folgt:
Wir können sehen, dass das hier abgerufene Ergebnis 0 Datensätze ist und der chinesische Inhalt der Bedingungen nicht verstümmelt ist, was sich von der erwarteten unterscheidet. Das Kopieren der gleichen SQL -Anweisung in SQLYOG kann zu normalen Ergebnissen führen.
Bei der Verwendung von SQLServer gab es kein solches Problem. Dies geschah diesmal mit MySQL. Es wird vermutet, dass der Inhalt von SQLServer- und MySQL -Konfigurationen unterschiedlich war, wenn MyBatis die Datenquellenumgebung konfigurierte. Nach sorgfältigem Vergleich und Online-Überprüfung relevanter Inhalte habe ich festgestellt, dass ich bei der Suche von MySQL Chinese den Parameter UseUnicode = True & CharacterCoding = UTF-8 nach JDBCURL hinzufügen muss, um das Codierungsformat anzugeben.
Vollständige URL:
JDBC: MySQL: //127.0.0.1: 3306/fanyl_web? useUnicode = true & charakteristisches Zeichnen = UTF-8
Starten Sie das Projekt, nachdem Sie das JDBCurl von MySQL geändert haben und weiterhin in den chinesischen "Zhang" eintreten. Die Suchergebnisse sind wie folgt:
Insgesamt wurden 3 Ergebnisse erzielt. Zu diesem Zeitpunkt wurde das Problem, dass MyBatis nicht nach Chinesisch suchen kann, wenn sie MySQL zur Durchführung von Fuzzy -Abfragen verwendet, gelöst.
Darüber hinaus sind mehrere gemeinsame Parameterbeschreibungen in JDBCURL von MySQL:
Das obige ist das, was ich Ihnen vorgestellt habe. Was soll ich tun, wenn ich keine Suchergebnisse bei MyBatis verwenden kann, um die MySQL -Fuzzy -Abfrage zu verwenden? Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!