您的位置:首页 > 大数据 > 人工智能

Mybaits---关于关联表数据查询

2016-05-06 14:52 579 查看
<resultMap id="ResultListUser" type="com.cwh.model.User" >
        <id column="id" property="id" jdbcType="INTEGER"/>
        <result column="userName" property="userName" jdbcType="VARCHAR"/>
        <result column="userAge" property="userAge" jdbcType="VARCHAR"/>
        <result column="userAddress" property="userAddress" jdbcType="VARCHAR"/>
    </resultMap>

<resultMap type="com.cwh.model.Article" id="resultUserArticleList">
<id column="id" property="id"/>
<result column="title" property="title" />
<result column="content" property="content" />
<association property="user" javaType="com.cwh.model.User" resultMap="ResultListUser"/>
</resultMap>

<select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
select article.id,article.title,article.content, user.id,user.userName,user.userAddress from user,article
where user.id=article.userid and user.id=#{id}
</select>

关联查询有两种写法,主要用以上这种,这样代码复用性比较大,在用这种方式是需特别注意的一点就是在查询语句写时注意主表关系,以多的一方为主,查询语句写的时候必须以article表的字段写在前面。

如果顺序调反,像以下错误写法:(那么出现查询结果只有是一条数据)

<select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
select  user.id,user.userName,user.userAddress,article.id,article.title,article.content from user,article
where user.id=article.userid and user.id=#{id}
</select>


修改一下,纠正下,其实存在这种问题是两张表都有同一个名的字段叫id,所以其实查询的时候把从表的ID这个字段另名一下就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: