电商--详情页

开发详情页功能

一:业务介绍

商品详情页,以购物者的角度展现一个sku的详情信息。实现点击购买、放入购物车、切换商品销售属性如颜色,版本等等。
另外一个特点就是该页面的高访问量,虽然只是一个查询操作,但是由于频繁的访问所以我们必须对其性能进行最大程度的优化,提升页面的访问速度

二:项目搭建

1.修改pom.xml
<parent>
   <groupId>com.atguigu.gmall</groupId>
   <artifactId>gmall-parent</artifactId>
   <version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
   <dependency>
      <groupId>com.atguigu.gmall</groupId>
      <artifactId>gmall-interface</artifactId>
      <version>1.0-SNAPSHOT</version>
   </dependency>
   <dependency>
      <groupId>com.atguigu.gmall</groupId>
      <artifactId>gmall-web-util</artifactId>
      <version>1.0-SNAPSHOT</version>
   </dependency>
</dependencies>


2.配置application.properties配置文件
spring.thymeleaf.mode=LEGACYHTML5
server.port=8084
spring.thymeleaf.cache=false

spring.dubbo.application.name=item-web
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=192.168.67.200:2181
spring.dubbo.base-package=com.atguigu.gmall
spring.dubbo.protocol.name=dubbo
spring.dubbo.consumer.timeout=10000
spring.dubbo.consumer.check=false


3.页面资源导入
4.测试项目是否正常

三:销售属性的处理

思路:

1、查出该商品的spu的所有销售属性和属性值 // 前台传参数skuId,查询出skuInfo,通过skuInfo.getSpuId()获得对应spuId 进而关联查询出该spu所有销售属性和属性值
2、标识出本商品对应的销售属性 // 查询sql语句中添加 IF(skv.sku_id IS NULL,0,1) is_checked 字段
3、点击其他销售属性值的组合,跳转到另外的sku页面
第一二步核心在于SpuSaleAttrMapper执行数据库查询时关联三张表以及添加is_checked 字段

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!--namespace:表示接口的全路径-->
<mapper namespace="com.atguigu.gmall0218.manage.mapper.SpuSaleAttrMapper">
    <!--resultMap:返回结果集
        id:表示唯一标识
        type:返回结果集数据类型
        autoMapping: 自动映射!
    -->
    <resultMap id="spuSaleAttrMap" type="com.atguigu.gmall0218.bean.SpuSaleAttr" autoMapping="true">
        <!--id:表示主键
        property:表示实体类的属性名
        column:表中的字段名
        -->
        <id property="id" column="id"></id>
        <!--普通字段-->
        <!--  <result></result>-->
        <!--mybatis 配置一对多-->
        <!-- ofType: 返回集合的属性对象-->
        <collection property="spuSaleAttrValueList" ofType="com.atguigu.gmall0218.bean.SpuSaleAttrValue" autoMapping="true">
         <!--column="sale_attr_value_id",查询语句中字段名,并非一定是表中字段名-->
           <id property="id" column="sale_attr_value_id"></id>
        </collection>
        <!--多对一-->
       <!-- <association property=""></association>-->
    </resultMap>
    <!--id:方法名称-->
    <!--#,$-->
    <!-- 如果一个参数可以:
        单纯只用mybatis 传入多个参数可以使用数字0,1,2代替传递的参数顺序!
    -->
    <select id="selectSpuSaleAttrList" resultMap="spuSaleAttrMap">
        select sa.id ,sa.spu_id, sa.sale_attr_name,sa.sale_attr_id,
        sv.id sale_attr_value_id,
        sv.sale_attr_value_name
        from spu_sale_attr sa inner join spu_sale_attr_value  sv
        on  sa.spu_id=sv.spu_id and sa.sale_attr_id=sv.sale_attr_id
        where  sa.spu_id=#{0}
    </select>

    <!--通用mapper 中传递多个从参数的时候,需要使用arg0,arg1-->
    <select id="selectSpuSaleAttrListCheckBySku" resultMap="spuSaleAttrMap">
       SELECT sa.id ,sa.spu_id, sa.sale_attr_name,sa.sale_attr_id,
            sv.id sale_attr_value_id,
            sv.sale_attr_value_name,
            skv.sku_id,
            // 注意 IS NULL 不要写IS NOT NULL,sql优化
            IF(skv.sku_id IS NULL,0,1)  is_checked
            FROM spu_sale_attr sa
            INNER JOIN spu_sale_attr_value  sv ON  sa.spu_id=sv.spu_id AND sa.sale_attr_id=sv.sale_attr_id
            LEFT JOIN sku_sale_attr_value skv ON skv.sale_attr_id= sa.sale_attr_id AND skv.sale_attr_value_id=sv.id AND skv.sku_id=#{arg0}
            WHERE  sa.spu_id=#{arg1}
            ORDER BY sv.sale_attr_id,sv.id
    </select>
</mapper>











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值