Scénario d'exigence: lorsque certaines des données enregistrées dans la base de données doivent être chiffrées et que la page doit être affichée normalement. Cela nous oblige à personnaliser le convertisseur de type. Lorsque MyBatis exécute SQL pour obtenir le résultat, Char ou Varchar2 est crypté et déchiffré via le convertisseur de type personnalisé. Le code Java est le suivant:
/ ** Typehandler personnalisé <br/> * 1 Insérez la base de données, Encrypt * 2 requêtes, Decrypt * @Author Administrator * * / public class CryptTypeHandler implémente TypeHandler <CryptType> {public CryptType GetResult (ResultSet RS, String Columnname) Throws SqException {String Value = "";; CryptType v = nouveau cryptType (valeur); Value = Rs.GetString (ColumnName); if (value! = null) {value = decrypt (value.toString ()); v.setValue (valeur); } return v; } public cryptType getResult (resultTset rs, int colmnindex) lève sqlexception {string value = ""; CryptType v = nouveau cryptType (valeur); Value = Rs.GetString (ColumnIndex); if (value! = null) {v.setValue (valeur); } return v; } public cryptType getResult (callableStatement cs, int colmnindex) lève sqlexception {string value = ""; CryptType v = new cryptType (); valeur = cs.getString (ColumnIndex); if (value! = null) {v.setValue (valeur); } return v; } public void setParameter (préparé PS, int i, paramètre crypttype, jdbcType arg3) lève sqlexception {string value = ""; if (paramètre! = null && paramètre.toString ()! = null) {value = Encrypt (paramètre.toString ()); } ps.SetString (i, value.toString ()); } / ** Insérez la base de données * @Param Value * @return * / private String Encrypt (String Value) {value = cryptutils.encrypt (value); valeur de retour; } / ** Lire à partir de la base de données * @param value * @return * / private String Decrypt (string value) {value = cryptutils.decrypt (value); valeur de retour; }}Type personnalisé
import java.io.serializable; / ** * Type personnalisé * L'attribut d'entité défini comme ce type sera crypté et déchiffré par crypttypehandler.java * * @author yy * * / public class mystring implémente serializable, chardequence, comparable <string> {private static final SerialVersionuid = 1l; valeur de chaîne privée; public myString () {} public cryptType (String Value) {this.value = value; } public String getValue () {return Value; } public void setValue (String Value) {this.value = value; } public int compareto (String arg0) {// TODO Méthode générée automatique Stub RETOUR 0; } public Char Charat (int arg0) {// TODO Méthode générée automatique Stub Retour 0; } public int length () {// TODO Méthode générée automatique Stub Retour 0; } Public CharSequence Sumence (int arg0, int arg1) {// TODO Méthode générée automatique Stub RETOUR NULL; } @Override public String toString () {return Value; }}Configuration de type personnalisé MyBatis
<! - Type personnalisé -> <typeHandlers> <typehandler javatype = "com. ***. MyString" handler = "com. ***. MyTypeHandler" /> </ typeHandlers>
Utilisé dans les entités
Classe publique LoanEnterprise {Nom MyString privé; // Remarque: // Si la page a des conditions de requête et est également cryptée, le jugement conditionnel dans Mybatis SQL ne correspondra pas. Une solution temporaire consiste à utiliser public cryptType getName () {if (name! = Null && name.getValue (). Equals ("")) {return null; } else {Nom de retour; }} public void setName (name cryptType) {this.name = name; }}Ce qui précède est le convertisseur de type personnalisé MyBatis qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!