商品缩略图和商品详情图总是重复

来源: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回答

翔仔

2020-01-29

程序说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

0
1
Suame飞飞
非常感谢!
2020-01-29
共1条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程