1。概要
MyBatisでマッピングを選択すると、ResultTypeまたはresultMapで返品タイプを使用できます。 resultTypeは返品タイプを直接表しますが、resultmapは外部結果マップへの参照ですが、resultTypeとresultMapは同時に存在することはできません。
MyBatisがマッピングをクエリしている場合、実際、各属性クエリは対応するマップに配置されます。キーは属性名で、値は対応する値です。
remived提供されたreturnタイプ属性がresultTypeである場合、MyBatisはマップ内のキー値のペアを取り出し、resultTypeで指定されたオブジェクトの対応する属性に割り当てます。したがって、実際には、mybatisの各クエリマップの返品タイプは結果マップです。ただし、提供された返品タイプ属性がresultTypeである場合、mybatisはresultTypeで指定されたオブジェクトの属性に対応する値を自動的に割り当てます。
remivied提供された返品タイプが結果マップである場合、マップはドメインモデルを適切に表すことができないため、それを対応するオブジェクト自体にさらに変換する必要があります。これは、複雑なクエリで非常に役立つことがよくあります。
2。resultStype
blog.javapublic class blog {private int id; private string title; private string content; private string owner; private list <comment>コメント;}対応するデータベーステーブルは、ID、タイトル、コンテンツ、および所有者の属性を保存します。
<typealias alias = "blog" type = "com.tiantian.mybatis.model.blog"/> <select id = "selectblog" parametertype = "int" resulttype = "blog"> select * select *
MyBatisは、結果マップオブジェクトを自動的に作成し、見つかった属性名に基づいてキー値ペアをカプセル化します。次に、リターンタイプがブログオブジェクトであることがわかり、結果マップからブログオブジェクトに対応するキー値ペアを取り出して割り当てます。
3。LesultMap
また、リターンタイプが直接結果マップである場合に非常に便利です。これは、主に複雑なジョイントクエリに使用されます。これは、簡単なクエリを実行する必要がないためです。まず、リターンタイプの結果マップを使用した簡単なクエリを見てから、複雑なクエリの使用を見てみましょう。
simple簡単なクエリを作成します
<resultmap type = "blog" id = "blogresult"> <id column = "id" property = "id"/> <result column = "title" property "/> <result column =" content "content" property = "content"/> <result column = "owner"/> <result column = "ander" and "property =" and " Property = "所有者"/> <</resultmap> <select id = "selectblog" parametertype = "int" resultmap = "blogresult"> select * from id =#{id} </select>選択マップの結果マップの値は、外部結果マップのIDであり、どの結果がマッピングされるかを示します。外部結果マップの型属性は、結果マップの結果の型を示します。これがブログの種類ですので、MyBatisはブログオブジェクトとしてそれを取り出します。結果マップノードの子ノードIDは、オブジェクトのIDを識別するために使用され、結果の子ノードはいくつかの単純なプロパティを識別するために使用されます。列プロパティは、データベースから照会された属性を表し、プロパティは、クエリプロパティの対応する値がエンティティオブジェクトに割り当てられているプロパティを表します。これは、Simpleクエリ用のResultMapを作成する方法です。
complexクエリ
ブログの参照があるコメントクラスがあり、どのブログのためのブログを示しています。コメントをクエリする場合、対応するブログも見つけてブログ属性に割り当てられなければなりません。
パブリッククラスのコメント{private int id; private string content; private date commentdate = new date(); private blog blog;} <! - from commentmapper.xml file-> <resultmap type = "comment" id = "commentresult"> <associationプロパティ= "select =" selectblog "columment =" blog "javatype =" "/> <" intmap resultmap = "commentresult"> select * from t_comment where id =#{id} </select> <select id = "selectblog" parametertype = "int" resulttype = "blog"> select * from t_blog =#{id} </select>最初に、IDをselectcommentとして選択したマップを要求し、次にidをcommentResultとしてresultmapオブジェクトを取得します。対応する結果マップの戻りタイプは、1つの関連ノードのみを備えたコメントオブジェクトであり、上記の単純なクエリに対応するIDおよび結果の子ノードがないことがわかります。ただし、コメントオブジェクトに対応するIDおよびその他の属性を引き続き割り当てます。これは、MyBatisが前に述べたもので、自動カプセル化機能を備えています。リターンタイプが提供されている限り、MyBatisはクエリ結果を使用して、それ自体の判断に従って対応するオブジェクトをカプセル化します。したがって、上記の簡単なクエリでは、どのフィールドがIDに対応し、どのフィールドが結果マップのタイトルに対応するかを明確に示していない場合、MyBatisはそれ自体の判断に従ってそれをカプセル化するのにも役立ちます。 MyBatis自身の判断は、クエリのフィールドまたは対応するエイリアスを返されるオブジェクトの属性と比較することです。一致し、タイプも一致する場合、MyBatisはそれを割り当てます。ブログ属性は、上記の対応する結果マップに関連付けられており、対応するJavaタイプはブログです。上記の記述方法では、関連するオブジェクトはサブQueriesを通じて関連付けられており、もちろん、Associationクエリを通じて直接関連することもできます。上記のAssociation Child Nodeでは、プロパティ属性は、どの関連プロパティが結果マップリターンタイプであるかを示します。上記の例では、コメントで管理されているブログ属性。選択するマップを選択するかを選択します。これは、対応する関連属性をマップする、つまり、属性オブジェクトに関連する属性オブジェクトを照会するために対応する値を持つ選択マップを要求します。列は、ID CommentResultを使用した結果マップに対応するキー価値ペアを示します。このキー値ペアは、関連するオブジェクトのサブクエリのパラメーターとして使用されます。つまり、SelectCommentのブログ属性クエリの値は、関連するオブジェクトブログのサブクエリにパラメーターとして渡されます。 Javatypeは、現在の関連するオブジェクトのタイプがJavaにあるかを示します。
上記は、1対1の場合に1対1または1対1〜1対1の関係のクエリを紹介します。実際のアプリケーションでは、より頻繁に使用する別のアプリケーションがあります。 1対1で対応するより多くのパーティーを見つけることです。より多くのパーティーを取り出すときは、1対1を関連付ける必要があります。ブログオブジェクトを取り出して、対応するすべてのコメントを取り出すとき、コメントを取り出すときは、リクエストを通してJavaで取り上げられる対応するブログを取り出す必要があります。
<! - blogmapper.xml Fileから - > <resultmap type = "blog" id = "blogresult"> <id column = "id" property = "id"/> <collection property = "comments" selectcommentsbyblog "column =" id "oftype =" comment "> </collection> </resportmap> <resultmap =" comment = "" comment javatype = "blog" column = "blog" select = "selectblog"/> </resultmap> <select id = "selectblog" parametertype = "int" resultmap = "blogresult"> select * from t_blog where where where where where where where where where where where where where where where where =#{blogid} </select>上記のリクエストのエントリは、ID selectblogを使用した選択マップであり、返される結果はID Blogresultの結果マップです。 ID Blogresultのタイプはブログで、IDの属性とフィールドを指定します。 IDを指定すると、MyBatisの内部構造に大きな影響があります。コメントオブジェクトに関連付けられています。ブログにはコレクションである多くのコメントがあるため、コレクションコレクションがマッピングされているためです。 Selectは、対応するコメントを照会するために実行されるサブクエリをまだ示しています。列とは、上記のフィールド値がパラメーターとしてサブクエリに渡されることを意味します。 OFTypeは、リターンタイプも表します。ここの返品タイプは、コレクション内のタイプです。 OFTypeがタイプの代わりに使用される理由は、MyBatis内でそれを協会協会と区別するために使用されるためです。
public void selectcommentsbyblogtest(){sqlsession session = util.getsqlsessionfactory()。opensession(); commentMapper commentMapper = session.getMapper(commentmapper.class); list <comthe> comment> comment> comments = commentmapper.selectcommentsbyblog(6); void testSelectone(){sqlsession session = util.getsqlsessionfactory()。opensession(); blogmapper blogmapper = session.getMapper.getMapper(blogmapper.class); blogmapper.selectblog(6); blogmapper.selectblog(6);コメント)system.out.println(コメント);} session.close();}上記は、編集者によって紹介されたMyBatisのReactsTypeとResultMapです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!