プロジェクト開発中、MyBatisのダイナミッククエリを実行するとき、私は問題に遭遇しました。MySQLがファジークエリのように実行しているとき、結果は英語を入力することで通常取得できますが、中国語を入力することで得られた結果は空です。
GETを使用して要求されるため、中国語が文字化けされないようにするために、コンソールがリクエストパラメーターを受信した後、中国語は1回エンコードされます。
try {realname = new String(realname.getBytes( "gbk")、 "utf-8");} catch(unsupportedencodingexception Exception){logger.error( "realNameエラーが発生しました。MyBatis Dynamic SQLマッピング、特定のSQLは次のとおりです。
まず、ファジークエリを使用して英語を取得します。プロジェクトを開始し、英語の「テスト」を入力すると、英語のコンテンツに従って検索することで得られた結果は次のとおりです。
SQLが正常に実行されていることがわかります。 「テスト」を使用して2つの結果を取得すると、データベース内の対応するフィールドの内容は、Zhang San Test02およびZhang SANテストです。通常、中国の「Zhang」を入力すると、これら2つのデータを照会することもできます。ファジークエリを使用して中国語を取得してみましょう。プロジェクトを開始し、中国の「Zhang」を入力してください。検索結果は次のとおりです。
ここで取得された結果は0のレコードであり、条件の中国の内容は文字化けされていないことがわかります。これは予想されるものとは異なります。同じSQLステートメントをSQLYOGにコピーすると、通常の結果が発生する可能性があります。
SQLServerを使用する場合、そのような問題はありませんでした。これは今回MySQLを使用して起こりました。 MyBatisがデータソース環境を構成した場合、SQLServerおよびMySQL構成の内容が異なっていたと疑われています。関連するコンテンツの慎重な比較とオンラインレビューの後、MySQLが中国語を検索すると、JDBCURLの後にパラメーターuseunicode = true&charatereCoding = utf-8を追加する必要があることがわかりました。
完全なURL:
JDBC:mysql://127.0.0.1:3306/fanyl_web?useunicode = true&charatereCoding = utf-8
MySQLのJDBCURLを変更した後、プロジェクトを開始し、中国の「Zhang」に参加し続けます。検索結果は次のとおりです。
合計3つの結果が取得されました。この時点で、MySQLを使用してファジークエリを実行するときにMyBatisが中国語を検索できないという問題が解決されました。
さらに、MySQLのJDBCURLのいくつかの一般的なパラメーターの説明:
上記は私があなたに紹介したものです。 MyBatisを使用してMySQLファジークエリを使用するときに結果を検索できない場合はどうすればよいですか?私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!