Anforderungsszenario: Wenn einige der in der Datenbank gespeicherten Daten verschlüsselt werden müssen und die Seite normal angezeigt werden muss. Dies erfordert, dass wir den Typkonverter anpassen. Wenn MyBatis SQL ausführt, um das Ergebnis zu erhalten, wird char oder varchar2 über den benutzerdefinierten Konverter verschlüsselt und entschlüsselt. Der Java -Code lautet wie folgt:
/** benutzerdefinierte TypeHandler <br/> * 1 Fügen Sie die Datenbank ein, verschlüsseln Sie * 2 Abfragen, entschlüsselt * @Author Administrator * */public class CryptypeHandler implementiert typeHandler <CryptType> {public CryptType getResult (Ergebnis, String Columnname) Wurst SQLEXPECTE {String -Wert = "; Cryptype v = neuer Cryptype (Wert); value = rs.getString (columnName); if (value! = null) {value = decrypt (value.toString ()); V.SetValue (Wert); } return v; } public cryptType getResult (Ergebnisset rs, int columnIndex) löscht sqlexception {String value = ""; Cryptype v = neuer Cryptype (Wert); value = rs.getString (columnIndex); if (value! = null) {v.setValue (value); } return v; } public cryptType getResult (CallABLESTATEMENT CS, INT ColumnIndex) löscht sqlexception {String value = ""; Cryptype v = new Cryptype (); value = cs.getString (columnIndex); if (value! = null) {v.setValue (value); } return v; } public void setParameter (prepectStatement ps, int i, kryptype parameter, jdbctype arg3) löscht sqlexception {String value = ""; if (parameter! = null && parameter.toString ()! } Ps.SetString (i, value.toString ()); } / ** die Datenbank einfügen*@param value*@return* / private String Encrypt (String -Wert) {value = Cryptutils.Enrypt (value); Rückgabewert; } / ** aus der Datenbank lesen* @param value* @return* / private String decrypt (String -Wert) {value = cryptutils.decrypt (value); Rückgabewert; }}Benutzerdefinierter Typ
importieren java.io.serializable; / ** * benutzerdefinierter Typ * Das als diesen Typ definierte Entitätsattribut wird verschlüsselt und entschlüsselt von CryptypeHandler.java * * @author yy * */ public class mystring implements serialisierbar, charsequence, vergleichbar <string> {private statische endgültige long serialversionuid = 1l; privater Stringwert; public myString () {} public CryptType (String -Wert) {this.Value = value; } public String getValue () {Rückgabewert; } public void setValue (String -Wert) {this.Value = value; } public int vergleicheto (string arg0) {// Todo automatisch generierte Methode Stub Return 0; } public charat (int arg0) {// Todo automatisch generierte Methode Stub Return 0; } public int länge () {// Todo automatisch generierte Methode Stub Return 0; } public charsequence subsequence (int arg0, int arg1) {// Todo automatisch generierte Methode Stub Return Null; } @Override public String toString () {return value; }}myBatis benutzerdefinierte Typkonfiguration
<!-benutzerdefinierter Typ-> <typeHandlers> <typeHandler javatype = "com. ***. Mystring" Handler = "com. ***.
In Entitäten verwendet
Public Class LoanEnterprise {privater MyString -Name; // Hinweis: // Wenn die Seite Abfragebedingungen hat und ebenfalls verschlüsselt ist, stimmt das bedingte Urteil in MyBatis SQL nicht überein. Eine temporäre Lösung besteht darin, public Cryptype getName () {if (name! = Null && name.getValue (). Equals ("")) {return null; } else {return name; }} public void setName (Cryptype Name) {this.name = name; }}Das obige ist der von dem Editor vorgestellte MyBatis -benutzerdefinierte Konverter. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!