实现:
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);
}
}
}