Сценарий требований: когда некоторые из данных, сохраненных в базе данных, должны быть зашифрованы, и страница должна отображаться нормально. Это требует от нас настройки конвертера типа. Когда Mybatis выполняет SQL, чтобы получить результат, Char или Varchar2 зашифруются и расшифровываются через конвертер пользовательского типа. Код Java выглядит следующим образом:
/** Пользовательский тип -иундлер <br/> * 1 Вставьте базу данных, Encrypt * 2 Запросы, Decrypt * @author Administrator * */Public Class CryptTypeHandler реализует TypeHandler <crypttype> {public crypttype getResult (ResultSet rs, String columname) throws sqlexception {string value = ";"; CryptType v = new CryptType (значение); value = rs.getString (ColumnName); if (value! = null) {value = decrypt (value.toString ()); V.SetValue (значение); } return v; } public cryptType getResult (ResultSet RS, int columnIndex) throws sqlexception {string value = ""; CryptType v = new CryptType (значение); value = rs.getString (ColumnIndex); if (value! = null) {v.setValue (value); } return v; } public cryptType getResult (callableStatement CS, int columnIndex) throws sqlexception {string value = ""; Crypttype v = new CryptType (); value = cs.getString (ColumnIndex); if (value! = null) {v.setValue (value); } return v; } public void setParameter (PreditStatement PS, Int I, CryptType Parameter, Jdbctype arg3) Throws sqlexception {string value = ""; if (parameter! = null && parameter.toString ()! = null) {value = incrypt (parameter.toString ()); } ps.setString (i, value.toString ()); } / ** Вставьте базу данных*@param value*@return* / private String Encrypt (строка value) {value = cryptutils.encrypt (value); возвращаемое значение; } / ** Читать из базы данных* @param value* @return* / private String decrypt (string value) {value = cryptutils.decrypt (value); возвращаемое значение; }}Пользовательский тип
импортировать java.io.serializable; / ** * Пользовательский тип * Атрибут объекта, определенный как этот тип, будет зашифрован и расшифрован с помощью Crypttypehandler.java * * @author yy * *// public mystring реализует сериализируемый, char -sequence, сопоставимый <string> {private static final long long orialversionuid = 1l; частное строковое значение; public myString () {} public cryptType (string value) {this.value = value; } public String getValue () {return Value; } public void setValue (строковое значение) {this.value = value; } public int compareto (string arg0) {// todo Автогенерированный метод заглушка return 0; } public char charat (int arg0) {// todo автоматически сгенерированный метод возврат 0; } public int length () {// todo Автопогенерированный метод retur return 0; } public char-sequestence (int arg0, int arg1) {// todo автоматически генерируемый метод return natural null; } @Override public String toString () {return Value; }}MyBatis пользовательский тип конфигурация
<!-Custom Type-> <TypeHandlers> <typeHandler javatype = "com. ***. MyString" Handler = "com. ***. Mytypehandler"/> </typehandlers>
Используется в сущностях
Общедоступный класс Leedenterprise {Private MyString Name; // Примечание: // Если на странице есть условия запроса, а также зашифровано, условное суждение в Mybatis SQL не совпадает. Временное решение состоит в том, чтобы использовать public crypttype getName () {if (name! = Null && name.getValue (). Equals ("")) {return null; } else {return name; }} public void setName (crypttype name) {this.name = name; }}Выше приведено конвертер типа MyBatis, представленный вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!