SSM整合仿小米商城后台(六)------实现删除商品和多条件查询

一、删除商品实施思路

  1. 判断商品是否可以删除,例如加入购物车的商品就不允许被删除
  2. 在商品删除是要有确认操作,以免误删

二、实现

  1. 在ProductInfoService接口中编写删除的方法
//删除商品
    public  int delete(Integer pid);
  1. 在ProductInfoServiceImpl业务逻辑中实现方法
  @Override
    public int delete(Integer pid) {
        int num=-1;
        try {
            //如果删除失败,此时num为删除影响的行数
            num=productInfoMapper.deleteByPrimaryKey(pid);
        } catch (Exception e) {
            e.printStackTrace();
            num=0;
        }
        return num;
    }
  1. 在控制层实现操作
 @RequestMapping("/delete")
    public String delete(Integer pid, Model model){
        int num= productInfoService.delete(pid);
        if (num>0){
            //删除成功
            model.addAttribute("del","删除成功");
            return "forward:/prod/split.action";
        }else {
            //删除失败
            model.addAttribute("del","删除失败");
            return "forward:/prod/split.action";
        }

    }
  1. 修改jsp页面
    product.jsp
    编辑点击按钮运行的方法和所携带的参数
    在这里插入图片描述
    编写方法
    在这里插入图片描述编写删除情况提示框
    在这里插入图片描述
  2. 运行结果
    在这里插入图片描述
    在这里插入图片描述

三、实现多条件查询思路

  1. 由于mybatis逆向工程生成的实体类ProductInfo中的属性不足以支撑多条件查询(例如最高价格和最低价格),所以需要再创建一个VO层封装一些查询需要的类;
    在这里插入图片描述
  2. 实现分页多条件查询
  3. 判断是否有符合产品没有就显示“没有符合商品”

四、实现

  1. 在pojo包下创建vo包并编写一个实体类ProductInfoVO.java
package com.oracle.xiaomi.pojo.vo;

/**
 * @author 孙泽鸿
 * @version 1.0
 * @title: PeoductInfoVO
 * @projectName XiaoMi_background
 * @description:
 * @date 2020/3/25   15:23
 */
public class ProductInfoVO {
    //查询名字
    private String pname;
    //查询的商品类型ID
    private Integer typeid;
    //查询商品的最低价格
    private Double lprice;
    //查询商品的最高价格
    private Double hprice;
    //封装当前页面
    private Integer page=1;

    public ProductInfoVO() {
    }

    public ProductInfoVO(String pname, Integer typeid, Double lprice, Double hprice, Integer page) {
        this.pname = pname;
        this.typeid = typeid;
        this.lprice = lprice;
        this.hprice = hprice;
        this.page = page;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public Integer getTypeid() {
        return typeid;
    }

    public void setTypeid(Integer typeid) {
        this.typeid = typeid;
    }

    public Double getLprice() {
        return lprice;
    }

    public void setLprice(Double lprice) {
        this.lprice = lprice;
    }

    public Double getHprice() {
        return hprice;
    }

    public void setHprice(Double hprice) {
        this.hprice = hprice;
    }

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    @Override
    public String toString() {
        return "ProductInfoVO{" +
                "pname='" + pname + '\'' +
                ", typeid=" + typeid +
                ", lprice=" + lprice +
                ", hprice=" + hprice +
                ", page=" + page +
                '}';
    }
}

  1. 在ProductInfoMapper接口中编写多条件查询的方法
    public List<ProductInfo>getAllByVO(ProductInfoVO vo);
  1. 在ProductInfoMapper.xml文件中编写查询语句
  <select id="getAllByVO" parameterType="com.oracle.xiaomi.pojo.vo.ProductInfoVO" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"></include>
     from product_info
     <!--拼条件-->
  <where>
    <if test="pname!='' and pname!=null">
      and p_name like '%${pname}%'
    </if>
    <if test="typeid!=null and typeid!=-1">
    and type_id=#{typeid}

    </if>
    <if test="lprice!=null and hprice==null">
      and p_price>=#{lprice}
    </if>
    <if test="lprice==null and hprice!=null">
      and p_price &lt;=#{hprice}
    </if>
    <if test="lprice!=null and hprice!=null">
      and p_price between #{lprice} and #{hprice}
    </if>
  </where>
  order  by p_id desc
  </select>
  1. 在ProductInfoService接口中编写所条件查询方法
    //多条件查询分页
    public PageInfo<ProductInfo> splitPageVO(ProductInfoVO vo, int pageSize);
}
  1. 在ProductInfoServiceImpl.java中实现这个方法
    @Override
    public PageInfo<ProductInfo> splitPageVO(ProductInfoVO vo , int pageSize) {
        PageHelper.startPage(vo.getPage(),pageSize);
        List<ProductInfo> list=productInfoMapper.getAllByVO(vo);
        PageInfo<ProductInfo> pageInfo=new PageInfo<>(list);
        return pageInfo;
    }
  1. 修改之前分页的控制层
    @RequestMapping("/split")
    public String split(ProductInfoVO vo, Model model) {
        PageInfo info = productInfoService.splitPageVO(vo,PAGE_SIZE);
        model.addAttribute("info", info);
        return "product";
}
  1. 修改product.jsp页面
    info传入查询条件内容 showPage为下面异步处理方法
    在这里插入图片描述
<!--分页的AJAX实现-->
<script type="text/javascript">
    function showPage(page) {//第二页

        //取出所有的条件
        var pname=$("#pname").val();
        var typeid=$("#typeid").val();
        var lprice=$("#lprice").val();
        var hprice=$("#hprice").val();

        if(page==0)
            page=1;

        $("#table").load("http://localhost:8080/prod/split.action #table",{"page":page,"pname":pname,"typeid":typeid,"lprice":lprice,"hprice":hprice})
    }
</script>
  1. 运行结果
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值