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 这个元素即可完成类之间的一对一的映射。