【メモ】Mybatisアドバンストクエリ(一)--自動マッピングを使ってペアの関係を処理します.

2257 ワード

【メモ】Mybatisアドバンストクエリ(準備)【ノート】Mybatisアドバンストクエリ(二)–レスルトンMapを使って一対のマッピング【ノート】Mybatisアドバンスクエリ(三)を設定します.ラベルを使って、ネストクエリと遅延を実現します.【ノート】Mybatisアドバンストクエリ(四).(五)–レスリングMapを使用して、ネストクエリと遅延ロード【ノート】Mybatisアドバンスクエリ(小結)–ネストクエリと遅延ローディング【ノート】Mybatisアドバンスクエリ(六)–識別器discrimiatの使用【ノート】Mybatisアドバンスクエリ(七)–保存プロセス【呼び出しノート】Mybatisアドバンスクエリ(八)–エニュメレーションプロセッサの使用【ノート】Mybatisアドバンスクエリ(9)–Mybatisコード生成器の使用【ノート】Mybatisアドバンスクエリ(10)–Mybatisキャッシュ使用
仮にRBAC権限システムでは、1つのユーザーは1つのキャラクターしか持っていないと仮定すると、1対1の関係になります.1対1のマッピングは重複データがあるかどうかを考慮する必要がないので、簡単に使うことができます.直接にMybatisの自動マッピングを使用することができます.
以下の例は、自動マッピングを使用して、ユーザ情報を照会しながらユーザの役割情報を取得することです.
  • SysUserクラスにSysRoleの属性を追加しました.コードは以下の通りです.
  • マッピングファイルSysUserMapper.xmlにselectUserAndRoleByIdを追加する方法は、以下の通りである.
  • SysUserMapperインターフェースにselectUserAndRoleByIdを追加する方法は、以下の通りである.
  • は、UserMaperTestクラスに対応する試験方法を追加し、以下のようにする.
  • 運転結果
    public class SysUser {
        //       
        
        /**
         *             (             )
         */
        private SysRole role;
    
        public SysRole getRole() {
    		return role;
    	}
    
    	public void setRole(SysRole role) {
    		this.role = role;
    	}
    }
    
  • Mybatis自動マッピング原理
  • 自動マッピングは、別名でMybatisに対応するフィールドに自動的に値を合わせます.簡単なマッピングであれば、usermuneのようなuserNameに対応します.多重層の入れ子であれば、role.rolemuneをrole.roleNameにマッピングします.Mybatisは、まずrole属性を検索します.roleオブジェクトを作成し、roleオブジェクトの中で引き続きNaromeの結合値を検索します.対象のroleNameにあります.
    ソース処理の流れは:最初のステップ:org.apphe.ibatis.reflection.ReflectorのaddGetMethods、addSetMethods、addFieldsの方法でクラスの属性のフィールド名、setterとgetterの方法を処理して、属性のタイプを保存してsetyptとgetyptesのmakerなどの属性を処理します.とgetTypesは以下の通りです.
    setTypes:{userInfo=class java.lang.String, userPassword=class java.lang.String, role=class ex.mybatis.rbac.model.SysRole, headImg=class [B, createTime=class java.util.Date, userEmail=class java.lang.String, id=class java.lang.Long, userName=class java.lang.String}get Types:{userInfo=class java.lang.String, userPassword=class java.lang.String, role=class ex.mybatis.rbac.model.SysRole, headImg=class [B, createTime=class java.util.Date, userEmail=class java.lang.String, id=class java.lang.Long, userName=class java.lang.String}第二のステップ:org.apphe.ibatis.exector.resultset.Default Resoult SetHandler.appyAutomationsのsetValue方法により、反射取得類のsetter方法を利用して赋予する.