【SSM-MyBatisフレーム】関連クエリ--一対一クエリー
3193 ワード
1.ResultType実現:
1.sql文(mapper.xml):
pojoクラスを作成し、上のsqlのマッピングを完了し、クエリした列が存在しないように作成します。オリジナルのorderクラスはマッピングを完了することができません。orderの拡張クラスを確立し、存在しない列を追加する必要があります。
出力タイプとして専用のpoクラスを定義し、sqlクエリー結果セットのすべてのフィールドを定義します。この方法は比較的簡単で、企業では一般的に使われています。
2.ResultMapの実現:
1.sql文(mapper.xml):
assication:関連クエリが必要という単条記録を表します。
property:関連クエリの結果を示すOrderクラスのUser属性に格納されます。
javaType: 関連するクエリーの結果マップタイプを表します。
2.pojoクラス:
注文orderクラスにユーザーuserの属性を追加し、ユーザー属性に関連するクエリのためのユーザ情報を格納する。注文はユーザとペアであるため、ここで直接に単一のUserオブジェクトを使用して関連クエリのユーザ情報を格納する。
assicationを使って関連クエリを完了し、結果をpojo属性オブジェクトにマッピングします。
3.ResultTypeとResultMap:
レスリングType:レスリングTypeを使うのは簡単ですが、pojoに検索された列名が含まれていない場合は、クラス名に対応する属性を追加する必要があります。マッピングが完了します。
特別な要求がないなら、レスリングTypeを使うことを勧めます。
ResultMapを単独で定義する必要があります。実現は面倒くさいです。クエリ結果に特別な要求がある場合、ResultMapを使用して、関連クエリをpojoの属性オブジェクトにマッピングすることができます。
ResultMapは遅延負荷を実現できます。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は遅延負荷を実現できません。