MyBatis映射一对一关联

cnflat0 2013-12-30

          使用惯了Hibernate, model类之间都会书写关联关系。现在使用  Mybatis,在Mybatis中如何映射类之间的关联关系,今天举例说一下一对一的关联关系在Mybatis中如何映射。

          例:  Blog与Author是一对一的关联关系

           model类的代码如下:

public class Blog implements Serializable {
	private static final long serialVersionUID = 1L;
	private Integer rowId;
	private Integer authorId;//作者ID
	private String title;
	private String content;
	private Author author;//关联作者类
	//省略Setter,Getter方法
}

public class Author implements Serializable {
	private static final long serialVersionUID = 1L;
	private Integer rowId;
	private String name;
	private Integer age;
	private String email;
	//省略Setter,Getter方法
	
}

        Mybatis的映射文件如下:

    

<resultMap type="Blog" id="blogResult">  
    <id column="rowId" property="blog_id" /> 
    <result column="authorId" property="authorId"/>  
    <result column="title" property="blog_title"/>  
    <result column="content" property="blog_content"/> 
    <!-- 映射关联的对象 -->  
    <association property="author" javaType="Author">  
        <id column="rowId" property="author_id"/>  
        <result column="name" property="author_name"/>  
        <result column="age" property="author_age"/>  
        <result column="email" property="author_email"/>   
    </association>     
</resultMap> 


<select id="selectBlog" parameterType="int" resultMap="blogResult">  
    select  
        B.rowId as blog_id,  
        B.title as blog_title,
        B.content as blog_content,  
        B.author_id as blog_author_id,  
        A.rowId as author_id,  
        A.name as author_name,  
        A.age as author_age,  
        A.email as author_email 
    From Blog B left join Author A on A.author_id = B.blog_id  
    where B.author_id = #{id}  
</select>

              使用association 这个元素即可完成类之间的一对一的映射。

相关推荐