Durante o desenvolvimento do projeto, ao fazer uma consulta dinâmica do Mybatis, encontrei um problema: quando o MySQL está conduzindo como consulta difusa, os resultados podem ser recuperados normalmente entrando em inglês, mas os resultados obtidos pela entrada de chineses estão vazios.
Como é solicitado o uso do GEG, a fim de garantir que o chinês não seja distorcido, o idioma chinês é codificado uma vez após o console receber os parâmetros de solicitação.
tente {realname = new String (realname.getBytes ("gbk"), "utf-8");} catch (não suportadancodingingException Exception) {Logger.error ("REALNAME Ocorreu o erro ao executar o UTF-8 codificação," + excepção.ToString (););}Mybatis Dynamic SQL Mapping, o SQL específico é o seguinte:
Primeiro, use uma consulta difusa para recuperar o inglês. Inicie o projeto, digite o "teste" inglês e os resultados obtidos pela pesquisa de acordo com o conteúdo em inglês são os seguintes:
Podemos ver que o SQL é executado normalmente. Usando "teste" para recuperar 2 resultados, o conteúdo dos campos correspondentes no banco de dados são o teste Zhang San Test02 e Zhang San. Normalmente, se entrarmos no "Zhang" chinês, também podemos consultar esses dois dados. Vamos tentar usar consulta difusa para recuperar chinês. Inicie o projeto, entre no "Zhang" chinês e os resultados da pesquisa são os seguintes:
Podemos ver que o resultado recuperado aqui são 0 registros e o conteúdo chinês das condições não é iluminado, o que é diferente do esperado. Copiar a mesma instrução SQL no SQLYOG pode resultar em resultados normais.
Não houve esse problema ao usar o SQLServer. Isso aconteceu desta vez usando o MySQL. Suspeita -se que o conteúdo das configurações SQLServer e MySQL fosse diferente quando o Mybatis configurou o ambiente da fonte de dados. Após uma comparação cuidadosa e revisão on-line do conteúdo relevante, descobri que quando o MySQL pesquisar chinês, preciso adicionar o parâmetro useunicode = true & caracterizencoding = utf-8 após o jdbcurl para especificar o formato de codificação.
URL completo:
JDBC: mysql: //127.0.0.1: 3306/fanyl_web? useunicode = true & caracterEncoding = utf-8
Depois de modificar o JDBCURL do MySQL, inicie o projeto e continue entrando no "Zhang" chinês. Os resultados da pesquisa são os seguintes:
Um total de 3 resultados foram recuperados. Nesse ponto, o problema que o Mybatis não pode procurar chinês ao usar o MySQL para executar a consulta difusa foi resolvida.
Além disso, várias descrições de parâmetros comuns no JDBCURL da MySQL:
O exposto acima é o que eu apresentei a você. O que devo fazer se não puder pesquisar os resultados ao usar o Mybatis para usar o MySQL Fuzzy Query? Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!