mybatis association的使用

来源:互联网 发布:数据库 防黑客 编辑:程序博客网 时间:2024/05/21 11:23

在上一篇文章中介绍了collection的使用以及java bean,表的结构,今天进行association使用的学习,在多对一的映射关系中,查询到多的一方顺带查询出一的一方是常见的!在此例子中,在查询文章的时候顺带将作者查询出来!

映射文件为:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="article">
    <resultMap  id="myMap" type="article">
        <association column="user" property="user" javaType="user"
            select="selectUser">
        </association>
    </resultMap>
    <select id="selectUser" resultType="user">
        select * from user
        where id=#{id}
    </select>
    <sql id="article_saveWithUser">
        insert into article(name,time,user)
        values(#{name},#{time},#{user.id})
    </sql>
    <sql id="article_saveNoUser">
        insert into article(name,time) values(#{name},#{time})
    </sql>
    <select id="article_selectAll" resultMap="myMap">
        select * from
        article
    </select>
    <insert id="article_save" parameterType="article">
        <if test="user!=null">
            <include refid="article_saveWithUser" />
        </if>
        <if test="user==null">
            <include refid="article_saveNoUser" />
        </if>
    </insert>
</mapper>

测试:


    @Test
    public void testSelectAll()
    {
        List<Article> result = service.findAll(null);
        for (Article a : result)
        {
            System.out.println(a);
        }
    }
结果:

Article [id=1, name=firstArticle, time=2013-11-3 0:00:00, user=User [article=null, id=1, name=d]]
Article [id=2, name=secondArticle, time=2013-11-3 0:00:00, user=User [article=null, id=1, name=d]]

级联查询成功!