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
    编辑点击按钮运行的方法和所携带的参数
    在这里插入图片描述
    编写方法
    在这里插入图片描述编写删除情况提示框
    SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第1张图片
  2. 运行结果
    在这里插入图片描述
    SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第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为下面异步处理方法
    SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第3张图片
<!--分页的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. 运行结果
    SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第4张图片SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第5张图片SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第6张图片SSM整合仿小米商城后台(六)------实现删除商品和多条件查询_第7张图片

你可能感兴趣的:(笔记)