關於mybatis一對多關聯查詢多條數據只顯示一條的問題

今天寫mybatis一對多查詢遇到了一個問題,就是多條的數據一直只顯示一條,給我快整吐了。

然後百度了一下,發現是因爲字段名相同的原因,我的兩張表的主鍵都是id,然後就直會顯示一條數據了。

<resultMap id="BaseResultMap" type="com.lmj.coupon.pojo.CouponForm">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="coupon_type" property="couponType" jdbcType="TINYINT"/>
        <result column="use_type" property="useType" jdbcType="TINYINT"/>
        <result column="shop_id" property="shopId" jdbcType="INTEGER"/>
        <result column="name" property="name" jdbcType="VARCHAR"/>
        <result column="del_flag" property="delFlag" jdbcType="TINYINT"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>

        <collection property="couponTemplets" javaType="list"
                    ofType="com.lmj.coupon.pojo.CouponTemplet">
            <id column="id" property="id" jdbcType="BIGINT"/>
            <result column="cf_id" property="cfId" jdbcType="BIGINT"/>
            <result column="coupon_type" property="couponType" jdbcType="TINYINT"/>
            <result column="use_type" property="useType" jdbcType="TINYINT"/>
            <result column="item_type" property="itemType" jdbcType="TINYINT"/>
        </collection>
    </resultMap>

然後只需要把多條數據的表id的column修改成別名就可以了(我改成了ctId,這樣sql語句裏面加一個as就行了):

<resultMap id="BaseResultMap" type="com.lmj.coupon.pojo.CouponForm">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="coupon_type" property="couponType" jdbcType="TINYINT"/>
        <result column="use_type" property="useType" jdbcType="TINYINT"/>
        <result column="shop_id" property="shopId" jdbcType="INTEGER"/>
        <result column="name" property="name" jdbcType="VARCHAR"/>
        <result column="del_flag" property="delFlag" jdbcType="TINYINT"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>

        <collection property="couponTemplets" javaType="list"
                    ofType="com.lmj.coupon.pojo.CouponTemplet">
            <id column="ctId" property="id" jdbcType="BIGINT"/>
            <result column="cf_id" property="cfId" jdbcType="BIGINT"/>
            <result column="coupon_type" property="couponType" jdbcType="TINYINT"/>
            <result column="use_type" property="useType" jdbcType="TINYINT"/>
            <result column="item_type" property="itemType" jdbcType="TINYINT"/>
        </collection>
    </resultMap>

    <select id="getCouponForm" resultMap="BaseResultMap">
        SELECT a.*,b.id as ctId,b.cf_id,b.name,b.remark,b.rule,b.expire_hour,b.shop_id,b.item_type FROM coupon_form a LEFT JOIN coupon_templet b ON a.id = b.cf_id
        WHERE a.del_flag = 0 and b.sw = 1 and b.update_time > NOW() and NOW() > b.create_time and a.coupon_type = 6
        <if test="shopId != null and shopId != '' ">
            and a.shop_id = #{shopId}
        </if>
    </select>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章