【SSM-MyBatisフレーム】関連クエリ--一対一クエリー


1.ResultType実現:
   1.sql文(mapper.xml):
      

	
   2.pojoクラス:
pojoクラスを作成し、上のsqlのマッピングを完了し、クエリした列が存在しないように作成します。オリジナルのorderクラスはマッピングを完了することができません。orderの拡張クラスを確立し、存在しない列を追加する必要があります。
 
/**
 *           resulttype
 * 
 * @author 
 *
 */
public class OrdersCustom extends Orders{

		/**
		 *  user.username,
  user.sex,
  user.address 
              ,  
		 */
		private String username;
		private String sex;
		private String address;
   3.mapper.javaインターフェース
 
/**
	 *   reslutType       
	 */
	public List findOrdersCustom();
   4.まとめ:
 
出力タイプとして専用のpoクラスを定義し、sqlクエリー結果セットのすべてのフィールドを定義します。この方法は比較的簡単で、企業では一般的に使われています。
2.ResultMapの実現:
 1.sql文(mapper.xml):
    

	



			
				
				
				
				
				
				
				
						
						
						
						
				
			
関連クエリが必要なのはユーザの情報であり、ユーザー情報をassicationによって注文先のユーザ属性にマッピングすることである。
    assication:関連クエリが必要という単条記録を表します。
    property:関連クエリの結果を示すOrderクラスのUser属性に格納されます。
    javaType: 関連するクエリーの結果マップタイプを表します。
   2.pojoクラス:
  注文orderクラスにユーザーuserの属性を追加し、ユーザー属性に関連するクエリのためのユーザ情報を格納する。注文はユーザとペアであるため、ここで直接に単一のUserオブジェクトを使用して関連クエリのユーザ情報を格納する。
    
public class Orders {
    private Integer id;

    private Integer userId;

    private String number;

    private Date createtime;

    private String note;
    
    //    
    private User user;
    3.mapper.javaインターフェース
  
/**
	 *   resultMap       
	 */
	public List findOrdersCustomResultMap();
    4.まとめ
    assicationを使って関連クエリを完了し、結果をpojo属性オブジェクトにマッピングします。
   3.ResultTypeとResultMap:
   レスリングType:レスリングTypeを使うのは簡単ですが、pojoに検索された列名が含まれていない場合は、クラス名に対応する属性を追加する必要があります。マッピングが完了します。
                      特別な要求がないなら、レスリングTypeを使うことを勧めます。
   ResultMapを単独で定義する必要があります。実現は面倒くさいです。クエリ結果に特別な要求がある場合、ResultMapを使用して、関連クエリをpojoの属性オブジェクトにマッピングすることができます。
     ResultMapは遅延負荷を実現できます。ResultTypeは遅延負荷を実現できません。