ในระหว่างการพัฒนาโครงการเมื่อทำการสืบค้นแบบไดนามิก mybatis ฉันพบปัญหา: เมื่อ MySQL กำลังดำเนินการเหมือนคิวรีฟัซซี่ผลลัพธ์สามารถเรียกคืนได้โดยการป้อนภาษาอังกฤษ แต่ผลลัพธ์ที่ได้จากการป้อนภาษาจีนนั้นว่างเปล่า
เนื่องจากมีการร้องขอโดยใช้ GET เพื่อให้แน่ใจว่าจีนไม่ได้อ่านหนังสือภาษาจีนจึงถูกเข้ารหัสหนึ่งครั้งหลังจากคอนโซลได้รับพารามิเตอร์คำขอ
ลอง {realName = สตริงใหม่ (realName.getBytes ("GBK"), "UTF-8");} catch (ข้อยกเว้น unsupportencodexception) {logger.error ("ข้อผิดพลาด realname เกิดขึ้นขณะทำการเข้ารหัส UTF-8"MyBatis Dynamic SQL Mapping SQL เฉพาะมีดังนี้:
ก่อนอื่นให้ใช้แบบสอบถามฟัซซี่เพื่อดึงภาษาอังกฤษ เริ่มโครงการป้อน "ทดสอบ" ภาษาอังกฤษและผลลัพธ์ที่ได้จากการค้นหาตามเนื้อหาภาษาอังกฤษมีดังนี้:
เราจะเห็นว่า SQL ถูกดำเนินการตามปกติ การใช้ "ทดสอบ" เพื่อดึงผลลัพธ์ 2 รายการเนื้อหาของฟิลด์ที่เกี่ยวข้องในฐานข้อมูลคือการทดสอบ Zhang San Test02 และ Zhang San โดยปกติถ้าเราเข้าสู่ "จาง" จีนเราสามารถสอบถามข้อมูลทั้งสองนี้ได้ ลองใช้แบบสอบถามฟัซซี่เพื่อดึงภาษาจีน เริ่มโครงการป้อน "จาง" จีนและผลการค้นหามีดังนี้:
เราจะเห็นได้ว่าผลลัพธ์ที่ได้รับที่นี่คือ 0 ระเบียนและเนื้อหาภาษาจีนของเงื่อนไขไม่ได้อ่านออกมาซึ่งแตกต่างจากที่คาดไว้ การคัดลอกคำสั่ง SQL เดียวกันลงใน SQLYOG อาจส่งผลให้ผลลัพธ์ปกติ
ไม่มีปัญหาดังกล่าวเมื่อใช้ SQLServer สิ่งนี้เกิดขึ้นในครั้งนี้โดยใช้ MySQL เป็นที่น่าสงสัยว่าเนื้อหาของการกำหนดค่า SQLServer และ MySQL นั้นแตกต่างกันเมื่อ MyBatis กำหนดค่าสภาพแวดล้อมแหล่งข้อมูล หลังจากการเปรียบเทียบอย่างระมัดระวังและการตรวจสอบออนไลน์ของเนื้อหาที่เกี่ยวข้องฉันพบว่าเมื่อ MySQL ค้นหาภาษาจีนฉันต้องเพิ่มพารามิเตอร์ useUnicode = true & characterencoding = UTF-8 หลังจาก JDBCURL เพื่อระบุรูปแบบการเข้ารหัส
URL ที่สมบูรณ์:
JDBC: mysql: //127.0.0.1: 3306/fanyl_web? useunicode = true & characterencoding = utf-8
หลังจากแก้ไข JDBCURL ของ MySQL เริ่มโครงการและเข้าสู่ "จาง" ของจีนต่อไป ผลการค้นหามีดังนี้:
มีการเรียกคืนผลลัพธ์ทั้งหมด 3 รายการ ณ จุดนี้ปัญหาที่ mybatis ไม่สามารถค้นหาภาษาจีนได้เมื่อใช้ MySQL เพื่อทำการสืบค้นฟัซซี่ได้รับการแก้ไข
นอกจากนี้คำอธิบายพารามิเตอร์ทั่วไปหลายประการใน JDBCURL ของ MySQL:
ข้างต้นคือสิ่งที่ฉันแนะนำให้คุณรู้จัก ฉันควรทำอย่างไรถ้าฉันไม่สามารถค้นหาผลลัพธ์ได้เมื่อใช้ mybatis เพื่อใช้การสืบค้น MySQL Fuzzy ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!