高级查询高级查询高级查询高级查询

高级查询

实现:

package product.DAO.Product;

 

import java.math.BigDecimal;

import java.util.List;

 

import product.domain.Productach;

 

public interface IProduct {

   void insert(Productach pro);

   void delete(long id);

   void update(long id,Productach pro);

   Productach getone(long id);

   List<Productach> list();

   List<Productach> search(String productname,BigDecimal minsale,BigDecimal max);

}

 

 

实现类:

package product.DAO;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

import product.DAO.Product.IProduct;

import product.domain.Productach;

import product.javabean.bean;

import product.javabean.beanlist;

import product.template.template;

public class ProductImpl implements IProduct{

    @Override

    public void insert(Productach pro) {

        // TODO Auto-generated method stub

        String sql="INSERT INTO product(productName,dir_id,salePrice,supplier,brand,cutoff,costPrice)VALUES(?,?,?,?,?,?,?)";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice());

    }

    @Override

    public void delete(long id) {

        // TODO Auto-generated method stub

        String sql="DELETE FROM product where id=?";

        template.DMLoperate(sql, id);

    }

    @Override

    public void update(long id, Productach pro) {

        // TODO Auto-generated method stub

        String sql="UPDATE product set productName=?,dir_id=?,salePrice=?,supplier=?,brand=?,cutoff=?,costPrice=? where id=?";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice(),id);

    }

    @Override

    public Productach getone(long id) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product where id=?";

    return  template.DQLoperator(sql, new bean<>(Productach.class), id);

        

    }

    @Override

    public List<Productach> list() {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product";

        return  template.DQLoperator(sql, new beanlist<>(Productach.class));

        

    }

    //高级查询部分

    @Override

    public List<Productach> search(String productname, BigDecimal minsale, BigDecimal maxsale) {

        // TODO Auto-generated method stub

        StringBuilder sql=new StringBuilder(100);

        sql.append("SELECT *FROM product where 1=1");

        List<Object> para=new ArrayList<>();

        if(haslength(productname))

        {

            sql.append(" AND productName like ?");

            para.add("%"+productname+"%");

        }

        if(minsale!=null)

        {

            sql.append(" AND salePrice >= ?");

            para.add(minsale);

        }

        if(maxsale!=null)

        {

            sql.append(" AND salePrice <= ?");

            para.add(maxsale);

        }

        return template.DQLoperator(sql.toString(), new beanlist<Productach>(Productach.class), para.toArray());

    }

    

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

改进后的代码

接口

package product.DAO.Product;

 

import java.math.BigDecimal;

import java.util.List;

 

import product.domain.Productach;

import product.productquery.productquery;

 

public interface IProduct {

   void insert(Productach pro);

   void delete(long id);

   void update(long id,Productach pro);

   Productach getone(long id);

   List<Productach> list();

   List<Productach> search(productquery go);

}

 

 

 

实现类

package product.DAO;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

import product.DAO.Product.IProduct;

import product.domain.Productach;

import product.javabean.bean;

import product.javabean.beanlist;

import product.productquery.productquery;

import product.template.template;

public class ProductImpl implements IProduct{

    @Override

    public void insert(Productach pro) {

        // TODO Auto-generated method stub

        String sql="INSERT INTO product(productName,dir_id,salePrice,supplier,brand,cutoff,costPrice)VALUES(?,?,?,?,?,?,?)";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice());

    }

    @Override

    public void delete(long id) {

        // TODO Auto-generated method stub

        String sql="DELETE FROM product where id=?";

        template.DMLoperate(sql, id);

    }

    @Override

    public void update(long id, Productach pro) {

        // TODO Auto-generated method stub

        String sql="UPDATE product set productName=?,dir_id=?,salePrice=?,supplier=?,brand=?,cutoff=?,costPrice=? where id=?";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice(),id);

    }

    @Override

    public Productach getone(long id) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product where id=?";

    return  template.DQLoperator(sql, new bean<>(Productach.class), id);

        

    }

    @Override

    public List<Productach> list() {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product";

        return  template.DQLoperator(sql, new beanlist<>(Productach.class));

        

    }

    

    @Override

    public List<Productach> search(productquery go) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM product"+go.getquerystring();

        return template.DQLoperator(sql, new beanlist<Productach>(Productach.class), go.getpara().toArray());

    }

    

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

 

 

productquery类

package product.productquery;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

import lombok.Data;

@Data

public class productquery {

    private String productName;

    private BigDecimal minsale;

    private BigDecimal maxsale;

    private List<Object> para=new ArrayList<>();

    

    public String getquerystring()

    {

        StringBuilder sql=new StringBuilder(100);

        sql.append(" where 1=1");

        

        if(haslength(productName))

        {

            sql.append(" AND productName like ?");

            para.add("%"+productName+"%");

        }

        if(minsale!=null)

        {

            sql.append(" AND salePrice >= ?");

            para.add(minsale);

        }

        if(maxsale!=null)

        {

            sql.append(" AND salePrice <= ?");

            para.add(maxsale);

        }

        return  sql.toString();

    }

    public List<Object>getpara()

    {

        return para;

    }

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

测试类:

package product.ProductTest;

import static org.junit.Assert.*;

import java.math.BigDecimal;

import java.util.List;

import org.junit.Test;

import product.DAO.ProductImpl;

import product.DAO.Product.IProduct;

import product.domain.Productach;

import product.productquery.productquery;

public class IProductTest {

    @Test

    public void testInsert() {

         Productach pro=new Productach();

         pro.setBrand("乔丹");

         pro.setCostPrice(0.8);

         pro.setCutoff(0.9);

         pro.setDir_id(3);

         pro.setProductName("太空鞋");

         pro.setSalePrice(240);

         pro.setSupplier("中国");

         System.out.println(pro);

         IProduct dao=new ProductImpl();

         dao.insert(pro);

    }

    @Test

    public void testDelete() {

        IProduct dao=new ProductImpl();

         dao.delete(21);

    }

    @Test

    public void testUpdate() {

         Productach pro=new Productach();

         pro.setSalePrice(24000);

         pro.setBrand("jordan");

         pro.setCostPrice(0.9);

         pro.setCutoff(0.5);

         pro.setDir_id(4);

         pro.setProductName("跑步鞋");

         pro.setSalePrice(2400);

         pro.setSupplier("CHINA");

         IProduct dao=new ProductImpl();

         dao.update(22,pro);

    }

    @Test

    public void testGetone() {

        ProductImpl dao=new ProductImpl();

        System.out.println(dao.getone(1));

               

    }

    @Test

    public void testList() {

        ProductImpl dao=new ProductImpl();

        List<Productach>list=dao.list();

        for (Productach pro : list) {

            System.out.println(pro);

        }

    }

    @Test

    public void testsearch() {

        ProductImpl dao=new ProductImpl();

        productquery pro=new productquery();

        

        pro.setProductName("M");

        pro.setMinsale(new BigDecimal("100"));

        pro.setMaxsale(new BigDecimal("250"));

        List<Productach>list=dao.search(pro);

        System.out.println(list.size());

        for (Productach product : list) {

            System.out.println(product);

        }

        

    }

}

高级查询

高级查询

高级查询

进一步修改:

IProduct类

package product.DAO.Product;

 

import java.math.BigDecimal;

import java.util.List;

 

import product.domain.Productach;

import product.productquery.productquery;

 

public interface IProduct {

   void insert(Productach pro);

   void delete(long id);

   void update(long id,Productach pro);

   Productach getone(long id);

   List<Productach> list();

   List<Productach> search(productquery go);

}

 

ProductImpl类

package product.DAO;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

import product.DAO.Product.IProduct;

import product.domain.Productach;

import product.javabean.bean;

import product.javabean.beanlist;

import product.productquery.productquery;

import product.template.template;

public class ProductImpl implements IProduct{

    @Override

    public void insert(Productach pro) {

        // TODO Auto-generated method stub

        String sql="INSERT INTO product(productName,dir_id,salePrice,supplier,brand,cutoff,costPrice)VALUES(?,?,?,?,?,?,?)";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice());

    }

    @Override

    public void delete(long id) {

        // TODO Auto-generated method stub

        String sql="DELETE FROM product where id=?";

        template.DMLoperate(sql, id);

    }

    @Override

    public void update(long id, Productach pro) {

        // TODO Auto-generated method stub

        String sql="UPDATE product set productName=?,dir_id=?,salePrice=?,supplier=?,brand=?,cutoff=?,costPrice=? where id=?";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice(),id);

    }

    @Override

    public Productach getone(long id) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product where id=?";

    return  template.DQLoperator(sql, new bean<>(Productach.class), id);

        

    }

    @Override

    public List<Productach> list() {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product";

        return  template.DQLoperator(sql, new beanlist<>(Productach.class));

        

    }

    

    @Override

    public List<Productach> search(productquery go) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM product"+go.getquerystring();

        System.out.println(sql);

        return template.DQLoperator(sql, new beanlist<Productach>(Productach.class), go.getpara().toArray());

    }

    

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

 

 

 

 

 

productquery类

package product.productquery;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

importorg.apache.commons.lang3.StringUtils;

import lombok.Data;

@Data

public class productquery {

    private String productName;

    private BigDecimal minsale;

    private BigDecimal maxsale;

    private List<Object> para=new ArrayList<>();

    private List<String> connection=new ArrayList<>();

    public String getquerystring()

    {

        StringBuilder sql=new StringBuilder(100);

        

        

        if(haslength(productName))

        {

            connection.add(" productName like ? ");

            para.add("%"+productName+"%");

        }

        if(minsale!=null)

        {

            connection.add("  salePrice >= ? ");

            para.add(minsale);

        }

        if(maxsale!=null)

        {

            connection.add(" salePrice <= ?");

            para.add(maxsale);

        }

        if(connection.size()==0)

        {

            return "";

        }

        String query=StringUtils.join(connection," AND ");

        return  sql.append(" WHERE ").append(query).toString();

    }

    public List<Object>getpara()

    {

        return para;

    }

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

 

更进一步的修改

 

高级查询

 productquery类

package product.productquery;

 

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.commons.lang3.StringUtils;

 

import lombok.Data;

 

@Data

public class productquery {

    private String productName;

    private BigDecimal minsale;

    private BigDecimal maxsale;

    private Long dirId=-1L;

    private List<Object> para=new ArrayList<>();

    private List<String> connection=new ArrayList<>();

    public String getquerystring()

    {

        StringBuilder sql=new StringBuilder(100);

        

        

        if(haslength(productName))

        {

            connection.add(" productName like ? ");

            para.add("%"+productName+"%");

        }

        if(minsale!=null)

        {

            connection.add("  salePrice >= ? ");

            para.add(minsale);

        }

        if(maxsale!=null)

        {

            connection.add(" salePrice <= ?");

            para.add(maxsale);

        }

        if(dirId!=-1)

        {

            connection.add(" dir_id= ?");

            para.add(dirId);

        }

        if(connection.size()==0)

        {

            return "";

        }

        String query=StringUtils.join(connection," AND ");

        return  sql.append(" WHERE ").append(query).toString();

    }

    public List<Object>getpara()

    {

        return para;

    }

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

 

ProductImpl类

package product.DAO;

 

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

 

import product.DAO.Product.IProduct;

import product.domain.Productach;

import product.javabean.bean;

import product.javabean.beanlist;

import product.productquery.productquery;

import product.template.template;

 

public class ProductImpl implements IProduct{

 

    @Override

    public void insert(Productach pro) {

        // TODO Auto-generated method stub

        String sql="INSERT INTO product(productName,dir_id,salePrice,supplier,brand,cutoff,costPrice)VALUES(?,?,?,?,?,?,?)";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice());

    }

 

    @Override

    public void delete(long id) {

        // TODO Auto-generated method stub

        String sql="DELETE FROM product where id=?";

        template.DMLoperate(sql, id);

    }

 

    @Override

    public void update(long id, Productach pro) {

        // TODO Auto-generated method stub

        String sql="UPDATE product set productName=?,dir_id=?,salePrice=?,supplier=?,brand=?,cutoff=?,costPrice=? where id=?";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice(),id);

    }

 

    @Override

    public Productach getone(long id) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product where id=?";

    return     template.DQLoperator(sql, new bean<>(Productach.class), id);

        

    }

 

    @Override

    public List<Productach> list() {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product";

        return     template.DQLoperator(sql, new beanlist<>(Productach.class));

        

    }

 

 

    

 

    @Override

    public List<Productach> search(productquery go) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM product"+go.getquerystring();

        System.out.println(sql);

        return template.DQLoperator(sql, new beanlist<Productach>(Productach.class), go.getpara().toArray());

    }

    

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

 

前台代码

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

   <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

    <h1>商品信息</h1>

    <form action="/product?cmd=list" method="post">

        商品名称:<input type="text" name="name" value="${go.productName }" /><br>

        商品价格:<input type="nmuber" name="minsale" value="${go.minsale }"/>-<input type="nmuber" name="maxsale" value="${go.maxsale }"/><br>

        <select name="yaoshi">

            <option value="-1">所有分类</option>

            <c:forEach items="${dirdao }" var="item">

                <option value="${item.id }" ${item.id==go.dirId?"selected":"" }>${item.dirName }</option>

            </c:forEach>

        </select>

        <input type="submit" value="查询"/>

        

    </form>

    <a href="/product?cmd=edit">添加商品</a>

    <table cellpadding="0" cellspacing="0" border="1" width="60%">

        <tr style="background-color:orange;">

            <th>货品编号</th>

            <th>货品名称</th>

            <th>货品品牌</th>

            <th>货品分类</th>

            <th>供应商</th>

            <th>零售价</th>

            <th>成本价</th>

            <th>折扣</th>

            <th>操作</th>

        </tr>

        <c:forEach items="${list}" var="item" varStatus="vs">

        <tr style="background-color:${vs.count%2==0?'pink':''};">

            <td>${item.id}</td>

            <td>${item.productName}</td>

            <td>${item.brand}</td>

            <td>

            

                <c:choose>

                    <c:when test="${item.dir_id==1}">

                        鼠标

                    </c:when>

                    <c:when test="${item.dir_id==2}">

                        无线鼠标

                    </c:when>

                    <c:when test="${item.dir_id==3}">

                        有线鼠标

                    </c:when>

                    <c:when test="${item.dir_id==4}">

                        游戏鼠标

                    </c:when>

                    <c:when test="${item.dir_id==5}">

                        机械鼠标

                    </c:when>

                </c:choose>

                

                

            </td>

            <td>${item.supplier}</td>

            <td>${item.salePrice}</td>

            <td>${item.costPrice}</td>

            <td>${item.cutoff}</td>

            <td style="align-content: center;"><a href="/product?cmd=delete&id=${item.id}">删除</a>||<a href="/product?cmd=edit&id=${item.id}">编辑</a></td>

          </c:forEach>

        </tr>

    </table>

</body>

</html>

 

 

高级查询高级查询

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

   <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

    <h1>商品信息</h1>

    <form action="/product?cmd=list" method="post">

        商品名称:<input type="text" name="name" value="${go.productName }" /><br>

        商品价格:<input type="nmuber" name="minsale" value="${go.minsale }"/>-<input type="nmuber" name="maxsale" value="${go.maxsale }"/><br>

        <select name="yaoshi">

            <option value="-1">所有分类</option>

            <c:forEach items="${dirdao }" var="item">

                <option value="${item.id }" ${item.id==go.dirId?"selected":"" }>${item.dirName }</option>

            </c:forEach>

        </select>

        关键字查询:<input type="text" name="keyword" value="${go.keyword}" /><br>

        <input type="submit" value="查询"/>

        

    </form>

    <a href="/product?cmd=edit">添加商品</a>

    <table cellpadding="0" cellspacing="0" border="1" width="60%">

        <tr style="background-color:orange;">

            <th>货品编号</th>

            <th>货品名称</th>

            <th>货品品牌</th>

            <th>货品分类</th>

            <th>供应商</th>

            <th>零售价</th>

            <th>成本价</th>

            <th>折扣</th>

            <th>操作</th>

        </tr>

        <c:forEach items="${list}" var="item" varStatus="vs">

        <tr style="background-color:${vs.count%2==0?'pink':''};">

            <td>${item.id}</td>

            <td>${item.productName}</td>

            <td>${item.brand}</td>

            <td>

            

                <c:choose>

                    <c:when test="${item.dir_id==1}">

                        鼠标

                    </c:when>

                    <c:when test="${item.dir_id==2}">

                        无线鼠标

                    </c:when>

                    <c:when test="${item.dir_id==3}">

                        有线鼠标

                    </c:when>

                    <c:when test="${item.dir_id==4}">

                        游戏鼠标

                    </c:when>

                    <c:when test="${item.dir_id==5}">

                        机械鼠标

                    </c:when>

                </c:choose>

                

                

            </td>

            <td>${item.supplier}</td>

            <td>${item.salePrice}</td>

            <td>${item.costPrice}</td>

            <td>${item.cutoff}</td>

            <td style="align-content: center;"><a href="/product?cmd=delete&id=${item.id}">删除</a>||<a href="/product?cmd=edit&id=${item.id}">编辑</a></td>

          </c:forEach>

        </tr>

    </table>

</body>

</html>

 

ProductImpl类

package product.DAO;

 

import java.math.BigDecimal;

import java.security.GuardedObject;

import java.util.ArrayList;

import java.util.List;

 

import product.DAO.Product.IProduct;

import product.domain.Productach;

import product.javabean.bean;

import product.javabean.beanlist;

import product.productquery.productquery;

import product.template.template;

 

public class ProductImpl implements IProduct{

 

    @Override

    public void insert(Productach pro) {

        // TODO Auto-generated method stub

        String sql="INSERT INTO product(productName,dir_id,salePrice,supplier,brand,cutoff,costPrice)VALUES(?,?,?,?,?,?,?)";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice());

    }

 

    @Override

    public void delete(long id) {

        // TODO Auto-generated method stub

        String sql="DELETE FROM product where id=?";

        template.DMLoperate(sql, id);

    }

 

    @Override

    public void update(long id, Productach pro) {

        // TODO Auto-generated method stub

        String sql="UPDATE product set productName=?,dir_id=?,salePrice=?,supplier=?,brand=?,cutoff=?,costPrice=? where id=?";

        template.DMLoperate(sql, pro.getProductName(),pro.getDir_id(),pro.getSalePrice(),pro.getSupplier(),pro.getBrand(),pro.getCutoff(),pro.getCostPrice(),id);

    }

 

    @Override

    public Productach getone(long id) {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product where id=?";

    return     template.DQLoperator(sql, new bean<>(Productach.class), id);

        

    }

 

    @Override

    public List<Productach> list() {

        // TODO Auto-generated method stub

        String sql="SELECT *FROM  product";

        return     template.DQLoperator(sql, new beanlist<>(Productach.class));

        

    }

 

 

    

 

    @Override

    public List<Productach> search(productquery go) {

        // TODO Auto-generated method stub

    

        String sql="SELECT *FROM product"+go.getquerystring();

    

        return template.DQLoperator(sql, new beanlist<Productach>(Productach.class), go.getpara().toArray());

    }

    

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

}

 

 

servlet类

package product.servlet;

 

import java.io.IOException;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.math.BigDecimal;

import java.util.List;

import java.util.function.Supplier;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import product.DAO.ProductImpl;

import product.DAO.ProductdirImpl;

import product.DAO.Product.IProduct;

import product.DAO.Product.IProductdir;

import product.domain.Productach;

import product.productquery.productquery;

 

@WebServlet("/product")

public class servlet extends HttpServlet{

    private IProduct dao;

    private IProductdir dirdao;

    private static final long serialVersionUID = 1L;

   

    @Override

    public void init() throws ServletException {

        // TODO Auto-generated method stub

        dao=new ProductImpl();

        dirdao=new ProductdirImpl();

    }

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // TODO Auto-generated method stub

         req.setCharacterEncoding("UTF-8");

         String cmd=req.getParameter("cmd");

        

         switch (cmd) {

            case "edit":

                edit(req, resp);

                break;

            case "delete":

                delete(req, resp);

                break;

            case "saveORupdate":

                saveORupdate(req, resp);

                break;

            case "list":

                 list(req, resp);

                break;

            default:

                 list(req, resp);

                 break;

            }

    }

    public void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // TODO Auto-generated method stub

        productquery go=new productquery();

        this.parainit(req,go);

        req.setAttribute("go", go);

        List<Productach> list=dao.search(go);

    

        req.setAttribute("dirdao", dirdao.list());

        req.setAttribute("list", list);

        req.getRequestDispatcher("/WEB-INF/view/product/product.jsp").forward(req, resp);

        

    }

    private void parainit(HttpServletRequest req,productquery go) {

        try {

            req.setCharacterEncoding("UTF-8");

        } catch (UnsupportedEncodingException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        String name=req.getParameter("name");

        String minsale=req.getParameter("minsale");

        String maxsale=req.getParameter("maxsale");

        String sele=req.getParameter("yaoshi");

        String keyword=req.getParameter("keyword");

        

        if(haslength(name))

        {

            go.setProductName(name);

        

        }

        if(minsale!=null&&!"".equals(minsale))

        {

            go.setMinsale(new BigDecimal(minsale));

        }

        if(maxsale!=null&&!"".equals(maxsale))

        {

            go.setMaxsale(new BigDecimal(maxsale));

        }

        if(sele!=null&&!"".equals(sele))

        {

            go.setDirId(Long.valueOf(sele));

        }

        if(keyword!=null&&!"".equals(keyword))

        {

            go.setKeyword(keyword);

        }

    }

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

    public void saveORupdate(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        // TODO Auto-generated method stub

        String id=req.getParameter("num");

        String productName=req.getParameter("name");

        String brand=req.getParameter("brand");

        String kind=req.getParameter("kind");

        String supplier=req.getParameter("supply");

        String costsale=req.getParameter("costsale");

        String sale=req.getParameter("sale");

        String cost=req.getParameter("cost");

    

        ProductImpl dao=new ProductImpl();

        

        Productach pro=new Productach(0,productName,Long.valueOf(kind),Double.valueOf(sale),

                supplier,brand,Double.valueOf(costsale),

                Double.valueOf(cost));

    

    

        if(id!=null&&!"".equals(id))

        {

            dao.update(Long.valueOf(id), pro);

        }else {

            

            dao.insert(pro);

        }

        resp.sendRedirect("/product?cmd=list");

    }

    public void delete(HttpServletRequest req, HttpServletResponse resp) {

        // TODO Auto-generated method stub

        String id=req.getParameter("id");

        

        dao.delete(Long.valueOf(id));

        try {

            resp.sendRedirect("/product?cmd=list");

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

    public void edit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // TODO Auto-generated method stub

        String id=req.getParameter("id");

        if(id!=null&&!"".equals(id))

        {

            Productach pro=dao.getone(Long.valueOf(id));

            

            req.setAttribute("pro",pro);

        }

    

            req.getRequestDispatcher("/WEB-INF/view/product/saveORupdate.jsp").forward(req, resp);

        

    }

}

 

 

queryobject抽取类

package product.productquery;

 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

 

import org.apache.commons.lang3.StringUtils;

 

public class queryobject {

    private List<Object> para=new ArrayList<>();

    private List<String> connection=new ArrayList<>();

    

    public String getquerystring()

    {

        StringBuilder sql=new StringBuilder(100);

        

        this.custerize();

        

        if(connection.size()==0)

        {

            return "";

        }

        String query=StringUtils.join(connection," AND ");

 

        return sql.append(" WHERE ").append(query).toString();

    }

    public void custerize() {

        // TODO Auto-generated method stub

        

    }

    public List<Object>getpara(){

        return para;

    }

    public void addquery(String connection,Object...param) {

        this.connection.add(connection);

        

        this.para.addAll(Arrays.asList(param));

    }

}

 

 

productquery类

package product.productquery;

 

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

 

import org.apache.commons.lang3.StringUtils;

 

import lombok.Data;

import lombok.Getter;

import lombok.Setter;

 

@Data

public class productquery extends queryobject{

    private String productName;

    private BigDecimal minsale;

    private BigDecimal maxsale;

    private Long dirId=-1L;

    private    String keyword;

    public Boolean haslength(String value) {

        return value!=null&&!"".equals(value);

    }

    public void custerize()

    {

        

        if(haslength(productName))

        {

            /*

            connection.add(" productName like ? ");

            para.add("%"+productName+"%");*/

            

            super.addquery(" productName like ? ", "%"+productName+"%");

        }

        if(haslength(keyword))

        {

            /*

            connection.add(" productName like ? ");

            para.add("%"+productName+"%");*/

            

            super.addquery(" (productName like ? OR brand like ?) ", "%"+keyword+"%","%"+keyword+"%");

        }

        if(minsale!=null)

        {/*

            connection.add("  salePrice >= ? ");

            para.add(minsale);*/

            super.addquery("  salePrice >= ? ", minsale);

        }

        if(maxsale!=null)

        {

            //connection.add(" salePrice <= ?");

            //para.add(maxsale);

            super.addquery("  salePrice <= ? ", maxsale);

        }

        if(dirId!=-1)

        {

            //connection.add(" dir_id= ?");

            //para.add(dirId);

            super.addquery(" dir_id= ?", dirId);

        }

    }

}

 

高级查询

高级查询

相关文章: