요구 사항 시나리오 : 데이터베이스에 저장된 일부 데이터를 암호화해야하고 페이지를 정상적으로 표시 해야하는 경우. 이를 위해서는 유형 변환기를 사용자 정의해야합니다. MyBatis가 결과를 얻기 위해 SQL을 실행하면 CHAR 또는 VarChar2가 사용자 정의 유형 변환기를 통해 암호화되고 해독됩니다. Java 코드는 다음과 같습니다.
/** Custom TypeHandler <br/> * 1 데이터베이스 삽입, 암호화 * 2 쿼리, 해독 * @Author Administrator */public class cryptTypeHandler 구현 유형 핸들러 <cryptType> {public cryptType getResult (resultset rs, String value) sqlexection {string value = ""; crypttype v = 새로운 cryptType (값); 값 = rs.getString (columnName); if (value! = null) {value = decrypt (value.toString ()); v.setValue (값); } return v; } public crypttype getResult (resultSet rs, int columnIndex)는 sqlexception {string value = ""; crypttype v = 새로운 cryptType (값); 값 = rs.getString (columnIndex); if (value! = null) {v.setValue (value); } return v; } public crypttype getResult (callableStatement cs, int columnIndex)는 sqlexception {string value = ""; crypttype v = new crypttype (); 값 = cs.getString (columnIndex); if (value! = null) {v.setValue (value); } return v; } public void setParameter (preadStatement ps, int i, cryptType 매개 변수, jdbctype arg3) sqlexception {string value = ""; if (parameter! = null && parameter.toString ()! = null) {value = encrypt (parameter.toString ()); } ps.SetString (i, value.toString ()); } / ** 데이터베이스 삽입*@param value*@return* / private String encrypt (문자열 값) {value = cryptutils.encrypt (value); 반환 값; } / ** 데이터베이스에서 읽으십시오* @param value* @return* / private String decrypt (문자열 값) {value = cryptutils.decrypt (value); 반환 값; }}사용자 정의 유형
java.io.serializable import; / ** * 사용자 정의 유형 *이 유형으로 정의 된 엔티티 속성은 crypttypehandler.java * */ public class mystring emplements serializable, charevisence, 비교 가능한 <string> {private static final long serialversionuid = 1L; 개인 문자열 값; public mystring () {} public crypttype (문자열 값) {this.value = value; } public String getValue () {return 값; } public void setValue (문자열 값) {this.value = value; } public int compareto (String arg0) {// todo 자동 생성 메소드 스터브 리턴 0; } public char charat (int arg0) {// todo 자동 생성 메소드 스터브 리턴 0; } public int longth () {// todo 자동 생성 메소드 스터브 리턴 0; } public charEdegence sectectence (int arg0, int arg1) {// todo 자동 생성 메소드 스터브 리턴 null; } @override public String toString () {return value; }}MyBatis 사용자 정의 유형 구성
<!-사용자 정의 유형-> <typehandlers> <typehandler javatype = "com. ***. mystring"handler = "com. ***. myTypeHandler"/> </typeHandlers>
엔티티에서 사용됩니다
공개 클래스 LoanEnterprise {개인 마이 스트링 이름; // 참고 : // 페이지에 쿼리 조건이 있고 암호화 된 경우 MyBatis SQL의 조건부 판단이 일치하지 않습니다. 임시 솔루션은 public crypttype getName () {if (name! = null && name.getValue (). Equals ( "")) {return null; } else {반환 이름; }} public void setName (cryptType name) {this.name = name; }}위는 편집자가 소개 한 MyBatis 사용자 정의 유형 변환기입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!