2

2つのテーブルを持つデータベースがあります

  post: 
    id
    post_name
    post_desc        

  files:
    file_id
    file_name

  post_attachments
    post_id
    file_id

私のxmlマッピングでは、すでに持っています

  <select id="selectPosts" resultType="com.mycom.myproject.bean.postBean">  
     select id, post_name as postName from post
  </select>

そのため、1対多の関係です。投稿に添付されたすべてのファイルが必要です。mybatis でマッピングを行う方法がわかりません。

私はPostBeanのようなものを持っています

public class PostBean extends Post {

 private List<FileAttachment> filesAttachment;
 //getter setter
}

spring と mysql で mybatis をデータベースとして使用しています。他に何か必要な場合はお知らせください。

- アップデート -

mapper.xml を次のように変更しました

            <resultMap id="BaseResultMap" type="com.mycom.myproject.db.mybatis.model.post">
<!--
  WARNING - @mbggenerated
  This element is automatically generated by MyBatis Generator, do not modify.
  This element was generated on Tue Sep 11 10:14:08 BST 2012.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="post_name" jdbcType="VARCHAR" property="postName" />
<collection property="filesAttachment" ofType="com.mycom.myproject.db.mybatis.model.FileAttachment">
    <id property="fileId" column="file_id" />
    <id property="fileName" column="file_name" />
</collection>

--- update2 ---

実際には、上記で作成したマッピングテーブルも1つあるため、クエリは次のようになります

   <select id="selectPosts" parameterType="string"  resultType="com.mycom.myproject.bean.postBean"> 
   select p.id, p.post_name, fa.file_id as fileId, fa.file_name as fileName from post p
left outer join files f on f.post_id = p.id join post_attachments pa on pa.file_id = f.post_id
where p.id = 371    

  </select>    
4

1 に答える 1

4

マニュアルに示されているように、より複雑なクエリを記述し、マッパーを変更する必要があります。

リクエストは次のようになります。

<select id="selectPosts" resultType="com.mycom.myproject.bean.postBean">  
    select id, post_name, file_id, file_name as postName from post left outer join files
</select>

そしてあなたの結果マップ:

<resultMap id="detailedPostResultMap" type="Blog">
  <result property="id" column="id"/>
  <result property="name" column="post_name"/>
  <collection property=filesAttachment" ofType="FileAttachment">
     <id property="fileId" column="file_id"/>
     <result property="fileName" column="file_name"/>
  </collection>
</resultMap>
于 2012-09-19T09:28:42.017 に答える