69.商品项目(多条件查询)

1.查询条件的封装对象

页面传送条件到后台的对象一般命名有vo

package com.bjpowernode.pojo.vo;

public class ProductInfoVo {
    //商品名称
    private String pname;
    //商品类型
    private Integer typeid;
    //最低价格
    private Integer lprice;
    //最高价格
    private Integer hprice;
    //设置页码
    private Integer page=1;

    @Override
    public String toString() {
        return "ProductInfoVo{" +
                "pname='" + pname + '\'' +
                ", typeid=" + typeid +
                ", lprice=" + lprice +
                ", hprice=" + hprice +
                ", 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 Integer getLprice() {
        return lprice;
    }

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

    public Integer getHprice() {
        return hprice;
    }

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

    public Integer getPage() {
        return page;
    }

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

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

    public ProductInfoVo() {
    }
}

 

2.mapper开发

<sql id="Base_Column_List" >
    p_id, p_name, p_content, p_price, p_image, p_number, type_id, p_date
  </sql>

 

 <select id="selectCondition" parameterType="com.bjpowernode.pojo.vo.ProductInfoVo" resultMap="BaseResultMap">
    select <include refid="Base_Column_List"></include>
    from product_info
    <!--拼接条件-->
    <where>
      <!--商品名称不为空,拼接商品名称模糊查询-->
      <if test="pname != null and pname !=''">
        and p_name like '%${pname}%'
      </if>
      <!--商品类型不为空,拼接商品类型查询条件-->
      <if test="typeid != null and typeid != -1">
        and type_id =#{typeid}
      </if>
      <!--如果最低价格不为空,最高价格为空,则查询大于最低价格的所有商品-->
      <if test="(lprice != null and lprice != '') and (hprice == null or hprice == '')">
        and p_price &gt;= #{lprice}
      </if>
      <!--如果最高价格不为空,最低价格为空,则查询小于最高价格的所有商品-->
      <if test="(hprice != null and hprice !='') and (lprice == null or lprice == '')">
        and p_price &lt;= #{hprice}
      </if>
      <!--如果最高和最低价格都不为空,则查询介于最高价格和最低价格之间的所有商品-->
      <if test="(lprice !=null and lprice !='') and (hprice != null and hprice != '')">
        and p_price between #{lprice} and #{hprice}
      </if>
    </where>
    order by p_id desc
  </select>

 

 

3.业务逻辑层

@Override
    public List<ProductInfo> selectCondition(ProductInfoVo vo) {
        return productInfoMapper.selectCondition(vo);
    }

 

4.控制器开发

    //   多条件查询功能实现
    @ResponseBody
    @RequestMapping("/condition")
    public void condition(ProductInfoVo vo, HttpSession session){
        List<ProductInfo> list = productInfoService.selectCondition(vo);
        session.setAttribute("list",list);
    }

 

5.页面开发

function condition() {
        //取出查询条件
        var pname = $("#pname").val();
        var typeid = $("#typeid").val();
        var lprice = $("#lprice").val();
        var hprice = $("#hprice").val();
        $.ajax({
            type:"post",
            url:"${pageContext.request.contextPath}/prod/condition.action",
            data:{"pname":pname,"typeid":typeid,"lprice":lprice,"hprice":hprice},
            //"pname"是ProductInfoVo的成员变量,pname是上面那个从文本框获取到的
            success:function () {
                //刷新显示数据的容器
                $("#table").load("http://localhost:8080/admin/product.jsp #table");
            }
        });
    }

 

测试时页面无法显示,因为多条件查询还没有和分页连接上

posted @ 2021-12-30 15:04  最近饭吃的很多  阅读(65)  评论(0编辑  收藏  举报