【メモ】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クラスに対応する試験方法を追加し、以下のようにする. 運転結果 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:
仮にRBAC権限システムでは、1つのユーザーは1つのキャラクターしか持っていないと仮定すると、1対1の関係になります.1対1のマッピングは重複データがあるかどうかを考慮する必要がないので、簡単に使うことができます.直接にMybatisの自動マッピングを使用することができます.
以下の例は、自動マッピングを使用して、ユーザ情報を照会しながらユーザの役割情報を取得することです.
public class SysUser {
//
/**
* ( )
*/
private SysRole role;
public SysRole getRole() {
return role;
}
public void setRole(SysRole role) {
this.role = role;
}
}
ソース処理の流れは:最初のステップ: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方法を利用して赋予する.