Cenário de requisitos: quando alguns dos dados salvos no banco de dados precisam ser criptografados e a página precisa ser exibida normalmente. Isso exige que personalizemos o conversor de tipo. Quando o Mybatis executa o SQL para obter o resultado, o char ou o varchar2 é criptografado e descriptografado através do conversor de tipo personalizado. O código Java é o seguinte:
/** TIPO CUDDADO DO TIPO <BR/> * 1 Insira o banco de dados, Encrypt * 2 consultas, descriptografar * @Author Administrator * */public class CryptTypeHandler implementa TypeHandler <CryptType> {public CryptType getResult (ResultSet Rs, String Columnname) Throws Sqxception {String GetResult (ResultSet, "Columnname)). CryptType v = novo CryptType (valor); valor = rs.getString (columnName); if (value! = null) {value = descripto (value.toString ()); v.SetValue (valor); } retornar v; } public CryptType getResult (ResultSet RS, int colunindex) lança SqLexception {String value = ""; CryptType v = novo CryptType (valor); valor = rs.getString (columnIndex); if (value! = null) {v.SetValue (valor); } retornar v; } public CryptType GetResult (CLABLABLESTATEMENT CS, INT columnIndex) lança SQLException {String value = ""; CryptType v = new CryptType (); value = cs.getString (columnIndex); if (value! = null) {v.SetValue (valor); } retornar v; } public void setParameter (preparado PS, int i, parâmetro cripttype, jdbctype arg3) lança sqlexception {string value = ""; if (parâmetro! = null && parameter.toString ()! = null) {value = Encrypt (parameter.toString ()); } ps.SetString (i, value.toString ()); } / ** Insira o banco de dados*@param value*@return* / private string Encrypt (valor da string) {value = criptutils.encrypt (valor); valor de retorno; } / ** Leia no banco de dados* @param value* @return* / private string decrypt (value string) {value = criptutils.decrypt (value); valor de retorno; }}Tipo personalizado
importar java.io.serializable; / ** * Tipo personalizado * O atributo da entidade definido como esse tipo será criptografado e descriptografado por CrypttypeHandler.java * * @author yy * */ classe pública Mystring implementa serializável, CharSequence, comparável <string> {private Static Long SerialVersionuid = 1L; Valor de String Private; public myString () {} public CryptType (String value) {this.value = value; } public string getValue () {return value; } public void SetValue (valor da string) {this.value = value; } public int compareto (string arg0) {// TODO Method Method Stub Return 0; } public Char Charat (int arg0) {// TODO Method Auto-Gerated Stub Return 0; } public int length () {// TODO Method Method Stub Return 0; } subseqüência pública de charsequence (int arg0, int arg1) {// TODO Method Auto-Generated Stub Return NULL; } @Override public string tostring () {return value; }}Configuração do tipo personalizado mybatis
<!-Tipo personalizado-> <TepeHandlers> <TypeHandler javatype = "com. ***. MyString" Handler = "com. ***.
Usado em entidades
classe pública WHONHERNENTERPRISE {private mystring nome; // Nota: // Se a página tiver condições de consulta e também for criptografada, o julgamento condicional no Mybatis SQL não corresponderá. Uma solução temporária é usar public CryptType getName () {if (name! = Null && name.getValue (). Equals ("" ")) {return null; } else {Nome de return; }} public void setName (nome CryptType) {this.name = name; }}O exposto acima é o conversor de tipo personalizado mybatis introduzido pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!