商品缩略图和商品详情图总是重复
来源:10-2 项目打包发布与域名解析
Suame飞飞
2020-01-27
我直接在dao层测试还是如此 productId为13
这是productId=13的详情图片
但是测试的结果为
这里获取到的总是商品缩略图的地址
之前你说问题可能出在sql 但是我都看过了 我的sql没有问题,甚至也从你的github上拷贝了里面的代码贴上去,依旧如此
先给你看一下我的productDao.xml的sql
然后我复制的代码主要就是根据productId来查询商品的这一段,以及所需要的productMap 我感觉是没有问题的。
<resultMap type="com.imooc.o2o.entity.Product" id="productMap">
<id column="product_id" property="productId"/>
<!-- property对应实体类中的属性名 column 对应库表中的字段名 -->
<result column="product_name" property="productName"/>
<result column="product_desc" property="productDesc"/>
<result column="img_addr" property="imgAddr"/>
<result column="normal_price" property="normalPrice"/>
<result column="promotion_price" property="promotionPrice"/>
<result column="priority" property="priority"/>
<result column="create_time" property="createTime"/>
<result column="last_edit_time" property="lastEditTime"/>
<result column="enable_status" property="enableStatus"/>
<!-- 一对一使用association -->
<association property="productCategory" column="product_category_id"
javaType="com.imooc.o2o.entity.ProductCategory">
<!-- 对应ProductCategory中的属性 和 tb_product_category的字段 -->
<id column="product_category_id" property="productCategoryId"/>
<result column="product_category_name" property="productCategoryName"/>
</association>
<association property="shop" column="shop_id" javaType="com.imooc.o2o.entity.Shop">
<id column="shop_id" property="shopId"></id>
<result column="shop_name" property="shopName"/>
</association>
<!-- 一对多使用collection product中的属性为productImgList,
并且是通过库表中的product_id关联起来的 -->
<collection property="productImgList" column="product_id" ofType="com.imooc.o2o.entity.ProductImg">
<id column="product_img_id" property="productImgId"/>
<result column="img_addr" property="imgAddr"/>
<result column="img_desc" property="imgDesc"/>
<result column="priority" property="priority"/>
<result column="create_time" property="createTime"/>
<result column="product_id" property="productId"/>
</collection>
</resultMap>
<!-- 根据productId来查询商品信息 -->
<select id="queryProductById" parameterType="Long" resultMap="productMap">
select
p.product_id,
p.product_name,
p.product_desc,
p.img_addr,
p.normal_price,
p.promotion_price,
p.priority,
p.create_time,
p.last_edit_time,
p.enable_status,
p.product_category_id,
p.shop_id,
pm.product_img_id,
pm.img_addr as detail_img,
pm.img_desc,
pm.priority,
pm.create_time
from
tb_product p
<!-- 左连接LEFT JOIN,(即使该商品没有商品详情图片,也要查询出来该商铺) -->
left join
tb_product_img pm
on
p.product_id = pm.product_id
where
p.product_id = #{productId}
order by
pm.priority desc
</select>
写回答
1回答
-
程序说1是1,完全不会骗你的,在mapper里面,你的tb_product和tb_product_img的列名重复了,mybatis分不出列名相同的集合,所以这就是为什么只返回一个值的原因,建议你在<collection>标签下面,使用img_addr的别名来获取tb_product_img的值
https://blog.csdn.net/qinqigang/article/details/77863147
类似里面的
<sql id="WithDemos_Column_List"> k.id,k.demo_id,k.name,d.id did,d.name dname </sql> <association property="demos" javaType="com.hand.core.demos.dto.Demos"> <result column="did" property="id" jdbcType="DECIMAL" /> <result column="dname" property="name" jdbcType="VARCHAR" /> </association>
注意看dname
012020-01-29
相似问题