要件シナリオ:データベースに保存されているデータの一部を暗号化する必要があり、ページを正常に表示する必要があります。これには、タイプコンバーターをカスタマイズする必要があります。 MyBatisがSQLを実行して結果を取得すると、CHARまたはVARCHAR2はカスタムタイプコンバーターを介して暗号化および復号化されます。 Javaコードは次のとおりです。
/**カスタムタイプハンドラー<br/> * 1データベース、暗号化 * 2クエリ、decrypt * @author administrator * */public class crypttypehandler Implements typehandler <crypttype> {public crypttype getResult(resultset rs、string columnName)throws sqlexception {String value = "; cryptType v = new CryptType(value); 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); value = 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(); value = cs.getString(columnindex); if(value!= null){v.setValue(value); } return v; } public void setParameter(preatedstatement ps、int i、crypttypeパラメーター、jdbctype arg3)throws sqlexception {string value = ""; if(parameter!= null && parameter.toString()!= null){value = encrypt(parameter.toString()); } ps.setString(i、value.toString()); } / **データベースを挿入*@param値*@return* / private string encrypt(string value){value = cryptutils.encrypt(value);返品値。 } / **データベースから読み取り* @param値* @return* / private string decrypt(string value){value = cryptutils.decrypt(value);返品値。 }}カスタムタイプ
java.io.serializableをインポートします。 / ** *カスタムタイプ *このタイプとして定義されたエンティティ属性は、暗号化され、crypttypehandler.java * * @author yy * */ public class mystring emplings serializable、carchase> {private static final long serialversionuid = 1l;プライベート文字列値。 public mystring(){} public crypttype(string value){this.value = value; } public string getValue(){return値; } public void setValue(string value){this.value = value; } public int compareto(string arg0){// todo auto-fenated method stub Return 0; } public char charat(int arg0){// todo auto-enerated method stub Return 0; } public int length(){// todo自動生成メソッドスタブリターン0; } public Charsequence sundequence(int arg0、int arg1){// todo auto-fenated method stub Return null; } @Override public String toString(){return値; }}MyBatisカスタムタイプ構成
<! - カスタムタイプ - > <TypeHandlers> <TypeHandler javatype = "com。***。mystring" handler = "com
エンティティで使用されます
Public Class LoanenterPrise {プライベートマイストリング名; //注://ページにクエリ条件があり、暗号化されている場合、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のウェブサイトへのご支援ありがとうございます!