Escenario de requisito: cuando algunos de los datos guardados en la base de datos deben encriptarse y la página debe mostrarse normalmente. Esto requiere que personalicemos el tipo de convertidor. Cuando MyBatis ejecuta SQL para obtener el resultado, Char o Varchar2 se cifran y descifran a través del convertidor de tipo personalizado. El código Java es el siguiente:
/** TypeHandler personalizado <br/> * 1 Inserte la base de datos, cifrado * 2 consultas, descrypt * @author administrador * */public class CryptTypeHandler implementa typeHandler <CryptType> {public cryptType getResult (ResultSet rs, cadena columna columnName) tira sqlException {string value = ";";; Crypttype v = new CryptType (valor); valor = rs.getString (columnName); if (value! = null) {value = Decrypt (value.ToString ()); V.SetValue (valor); } return v; } public crypttype getResult (resultset rs, int columnIndex) lanza SQLException {String value = ""; Crypttype v = new CryptType (valor); valor = rs.getString (columnIndex); if (value! = null) {V.SetValue (valor); } return v; } public cryptType GetResult (CallableStatement CS, int columnIndex) lanza SQLException {String Value = ""; Crypttype v = new CryptType (); valor = cs.getString (columnIndex); if (value! = null) {V.SetValue (valor); } return v; } public void setParameter (PrepareStatement PS, int I, parámetro CryptType, JDBCType Arg3) lanza SQLException {String Value = ""; if (parameter! = null && parameter.ToString ()! = null) {value = encrypt (parameter.toString ()); } Ps.SetString (i, value.ToString ()); } / ** Inserte la base de datos*@param value*@return* / private string encrypt (value de cadena) {valor = cryptUtils.Encrypt (valor); valor de retorno; } / ** Leer desde la base de datos* @param valor* @return* / private string decrypt (string value) {value = cryptUtils.decrypt (valor); valor de retorno; }}Tipo personalizado
import java.io.serializable; / ** * Tipo personalizado * El atributo de entidad definido como este tipo estará encriptado y descifrado por CryptTypeHandler.java * * @author yy * */ public class myString implementa serializable, charsequence, comparable <string> {private estático final de serie Long Long = 1l; valor de cadena privada; public myString () {} public cryptType (valor de cadena) {this.value = value; } public String getValue () {Valor de retorno; } public void setValue (valor de cadena) {this.value = value; } public int Compareto (String Arg0) {// TODO Auto Generado Método STUB Return 0; } public Char Charat (int arg0) {// TODO Auto Generado Método STUB Return 0; } public int long () {// TODO Auto Generado Método STUB Return 0; } Public CharSECHENCE SUBSECHENCIA (int arg0, int arg1) {// tODO Método auto generado por retorno NULL; } @Override public String toString () {Valor de retorno; }}Configuración de tipo personalizado de mybatis
<
Utilizado en entidades
Public Class LoanSenterPrise {Nombre privado myString; // Nota: // Si la página tiene condiciones de consulta y también está encriptada, el juicio condicional en MyBatis SQL no coincidirá. Una solución temporal es usar public crypttype getName () {if (name! = Null && name.getValue (). Equals ("")) {return null; } else {nombre de retorno; }} public void setName (name crypttype) {this.name = name; }}Lo anterior es el convertidor de tipo MyBatis Custom introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!