سيناريو المتطلبات: عندما تحتاج بعض البيانات المحفوظة في قاعدة البيانات إلى تشفيرها ويجب عرض الصفحة بشكل طبيعي. هذا يتطلب منا تخصيص محول النوع. عندما يقوم MyBatis بتنفيذ SQL للحصول على النتيجة ، يتم تشفير char أو varchar2 وفك تشفيرها من خلال محول النوع المخصص. رمز Java كما يلي:
/** custom typehandler <br/> * 1 أدخل قاعدة البيانات ، تشفير * 2 الاستعلامات ، decrypt * Author Administrator * */clipttypehandler public class prements typehandler <crypttype> {public crypttype getResult (resterset rs) crypttype v = new CryptType (value) ؛ القيمة = rs.getString (اسم العمود) ؛ if (value! = null) {value = decrypt (value.toString ()) ؛ V.SetValue (القيمة) ؛ } return v ؛ } crypttype getResult (resultset rs ، int columnIndex) يلقي sqlexception {string value = "" ؛ crypttype v = new CryptType (value) ؛ value = rs.getString (columnIndex) ؛ if (value! = null) {v.setValue (value) ؛ } return v ؛ } crypttype getResult (callablestatement cs ، int columnIndex) يلقي sqlexception {string value = "" ؛ crypttype v = جديد crypttype () ؛ value = cs.getString (columnIndex) ؛ if (value! = null) {v.setValue (value) ؛ } return v ؛ } public void setParameter (preparedStatement PS ، int I ، crypttype parameter ، jdbctype arg3) يلقي sqlexception {string value = "" ؛ if (parameter! = null && parameter.toString ()! = null) {value = encrypt (parameter.toString ()) ؛ } ps.SetString (i ، value.toString ()) ؛ } / ** أدخل قاعدة البيانات*param value*return* / private string encrypt (قيمة السلسلة) {value = cryptutils.encrypt (value) ؛ قيمة الإرجاع } / ** اقرأ من قاعدة البيانات* param value* return* / private string decrypt (قيمة السلسلة) {value = cryptutils.decrypt (value) ؛ قيمة الإرجاع }}نوع مخصص
استيراد java.io.serializable ؛ / ** * النوع المخصص * سمة الكيان المعرفة بأن هذا النوع سيتم تشفيره وفك تشفيره بواسطة crypttypehandler.java * * author yy * */ الطبقة العامة myString تنفذ مسلسل ، charphence ، قابلة للمقارنة <string> {private static Final Finalversionuid = 1L ؛ قيمة السلسلة الخاصة ؛ public mystring () {} public crypttype (قيمة السلسلة) {this.value = value ؛ } السلسلة العامة getValue () {return value ؛ } public void setValue (قيمة السلسلة) {this.value = value ؛ } public int compareto (string arg0) {// todo method method method tuto return 0 ؛ } شارات شارات عامة (int arg0) {// todo method method method tuto return 0 ؛ } طول int العام () {// todo method method method tuto return 0 ؛ } charsequence public sequence (int arg0 ، int arg1) {// todo method method method method null ؛ } Override Public String ToString () {return value ؛ }}تكوين نوع MyBatis المخصص
<!-النوع المخصص-> <TypeHandlers> <typeHandler javatype = "com. ***. myString" Handler = "com. ***.
تستخدم في الكيانات
الطبقة العامة LoanEnterprise {private mystring name ؛ // ملاحظة: // إذا كانت الصفحة تحتوي على شروط الاستعلام وتم تشفيرها أيضًا ، فلن يتطابق الحكم المشروط في MyBatis SQL. الحل المؤقت هو استخدام crypttype public getName () {if (name! = null && name.getValue (). equals ("")) {return null ؛ } آخر {return name ؛ }} public void setName (اسم crypttype) {this.name = name ؛ }}ما سبق هو محول النوع المخصص MyBatis الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!