MyBatis映射一对一关联
? ? ? ? ? 使用惯了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;//作者IDprivate 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 这个元素即可完成类之间的一对一的映射。