Pendant le développement du projet, lors de la requête dynamique de MyBatis, j'ai rencontré un problème: lorsque MySQL mène comme une requête floue, les résultats peuvent être récupérés normalement en entrant en anglais, mais les résultats obtenus en entrant en chinois sont vides.
Puisqu'il est demandé en utilisant GET, afin de s'assurer que le chinois n'est pas brouillé, la langue chinoise est codée une fois après que la console a reçu les paramètres de demande.
try {realname = new String (realName.getBytes ("gbk"), "utf-8");} catch (unportdedencodingException exception) {logger.error ("l'erreur realName s'est produite lors de la réalisation de l'encodage UTF-8," + exception.tostring ();}Mappage SQL dynamique MyBatis, le SQL spécifique est le suivant:
Tout d'abord, utilisez Fuzzy Query pour récupérer l'anglais. Démarrez le projet, entrez le "test" anglais et les résultats obtenus en recherchant en fonction du contenu anglais sont les suivants:
Nous pouvons voir que SQL est exécuté normalement. En utilisant "Test" pour récupérer 2 résultats, le contenu des champs correspondants dans la base de données est le test Zhang SAN TEST02 et ZHANG SAN. Normalement, si nous entrons le "Zhang" chinois, nous pouvons également interroger ces deux données. Essayons d'utiliser Fuzzy Query pour récupérer le chinois. Démarrez le projet, entrez le "Zhang" chinois et les résultats de la recherche sont les suivants:
Nous pouvons voir que le résultat récupéré ici est 0 enregistrements, et le contenu chinois des conditions n'est pas brouillé, ce qui est différent de celui attendu. La copie de la même instruction SQL dans SQLYOG peut entraîner des résultats normaux.
Il n'y avait pas de tel problème lors de l'utilisation de SQLServer. Cela s'est produit cette fois en utilisant MySQL. On soupçonne que le contenu des configurations SQLServer et MySQL était différent lorsque MyBatis a configuré l'environnement de source de données. Après une comparaison minutieuse et une revue en ligne du contenu pertinent, j'ai constaté que lorsque MySQL recherche chinois, j'ai besoin d'ajouter le paramètre useUnicode = true & CaracterEncoding = UTF-8 après JDBCurl pour spécifier le format d'encodage.
URL complète:
JDBC: mysql: //127.0.0.1: 3306 / fanyl_web? useucicode = true & worseencoding = utf-8
Après avoir modifié JDBCurl de MySQL, démarrez le projet et continuez à entrer dans le "Zhang" chinois. Les résultats de la recherche sont les suivants:
Au total, 3 résultats ont été récupérés. À ce stade, le problème que Mybatis ne peut pas rechercher le chinois lors de l'utilisation de MySQL pour effectuer une requête floue a été résolue.
De plus, plusieurs descriptions de paramètres courantes dans JDBCurl de MySQL:
Ce qui précède est ce que je vous ai présenté. Que dois-je faire si je ne peux pas rechercher des résultats lorsque je utilise MyBatis pour utiliser Mysql Fuzzy Query? J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!