目录
1.功能介绍:
当我们进入商品详情页面时
①、商品的规格选项栏,规格选项栏目展示(可选择———部分展示,即已有规格选项)
默认展示基础价格商品,基础价格=商品默认价格+规格价格(前提:不同规格价格不同)
②、选择不同规格的组合,展示对应的商品价格
2.核心功能实现:
第一部分:
sql语句逻辑操作实现
-- 查询sku对应的规格以及规格中的规格选项
SELECT
hg_spec.*,
hg_spec_option.id spec_option_id,
hg_spec_option.option_name,
hg_spec_option.orders
FROM hg_spec
LEFT JOIN hg_spec_option
ON hg_spec.id = hg_spec_option.spec_id
WHERE hg_spec.id IN(SELECT DISTINCT
(spec_id)
FROM hg_sku_spec
WHERE sku_id = 3);
左外连接查询规格表hg_spec,规格选项中间表hg_spec_option中 相应参数,使用in关键字操作(根据商品规格中间表hg_sku_spec查询该商品的所有规格参数)
做题思路:为了效果展示明确,可以三表连查获取商品规格的明确信息,也就是对应的id值,同时根据商品的skuId来查询相应的商品规格,但是商品对应多个规格值,所以要子查询出该商品的多个规格的id,利用in关键字查询出当前商品的正确规格
java代码实现(后台操作)
xml文件
<!-- 实体类与数据库映射 -->
<resultMap type="Specs" id="specsMap" autoMapping="true">
<id column="id" property="id" />
<collection property="specOptions" ofType="SpecOptions"
column="id" select="selectSpecOptionsBySpecId"></collection>
</resultMap>
<!-- 查询sku拥有的spec规格 -->
<select id="selectBySkuId" resultType="Integer">
SELECT DISTINCT(spec_id)
FROM hg_sku_spec WHERE sku_id=#{value}
</select>
<!-- 根据规格ids查询 规格下的规格选项 -->
<select id="selectByIds" resultMap="specsMap">
SELECT * FROM hg_spec WHERE id IN
<foreach collection="list" open="(" close=")" separator="," item="id">
#{id}
</foreach>
</select>
service实现类调用