您的位置:首页 > 编程语言 > Go语言

Goods:我的订单查询分页

2015-09-08 15:58 459 查看
OrderDao

public PageBean<Order> findByUser(String uid, int pc) throws SQLException {
List<Expression> exprList = new ArrayList<Expression>();
exprList.add(new Expression("uid", "=", uid));
return findByCriteria(exprList, pc);
}

private PageBean<Order> findByCriteria(List<Expression> exprList, int pc) throws SQLException {
/*
* 1. 得到ps
* 2. 得到tr
* 3. 得到beanList
* 4. 创建PageBean,返回
*/
/*
* 1. 得到ps
*/
int ps = PageConstants.ORDER_PAGE_SIZE;//每页记录数
/*
* 2. 通过exprList来生成where子句
*/
StringBuilder whereSql = new StringBuilder(" where 1=1");
List<Object> params = new ArrayList<Object>();//SQL中有问号,它是对应问号的值
for(Expression expr : exprList) {
/*
* 添加一个条件上,
* 1) 以and开头
* 2) 条件的名称
* 3) 条件的运算符,可以是=、!=、>、< ... is null,is null没有值
* 4) 如果条件不是is null,再追加问号,然后再向params中添加一与问号对应的值
*/
whereSql.append(" and ").append(expr.getName())
.append(" ").append(expr.getOperator()).append(" ");
// where 1=1 and bid = ?
if(!expr.getOperator().equals("is null")) {
whereSql.append("?");
params.add(expr.getValue());
}
}

/*
* 3. 总记录数
*/
String sql = "select count(*) from t_order" + whereSql;
Number number = (Number)qr.query(sql, new ScalarHandler(), params.toArray());
int tr = number.intValue();//得到了总记录数
/*
* 4. 得到beanList,即当前页记录
*/
sql = "select * from t_order" + whereSql + " order by ordertime desc limit ?,?";
params.add((pc-1) * ps);//当前页首行记录的下标
params.add(ps);//一共查询几行,就是每页记录数

List<Order> beanList = qr.query(sql, new BeanListHandler<Order>(Order.class),
params.toArray());
// 虽然已经获取所有的订单,但每个订单中并没有订单条目。
// 遍历每个订单,为其加载它的所有订单条目
for(Order order : beanList) {
loadOrderItem(order);
}

/*
* 5. 创建PageBean,设置参数
*/
PageBean<Order> pb = new PageBean<Order>();
/*
* 其中PageBean没有url,这个任务由Servlet完成
*/
pb.setBeanList(beanList);
pb.setPc(pc);
pb.setPs(ps);
pb.setTr(tr);

return pb;
}

/*
* 为指定的order载它的所有OrderItem
*/
private void loadOrderItem(Order order) throws SQLException {
/*
* 1. 给sql语句select * from t_orderitem where oid=?
* 2. 执行之,得到List<OrderItem>
* 3. 设置给Order对象
*/
String sql = "select * from t_orderitem where oid=?";
List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler(), order.getOid());
List<OrderItem> orderItemList = toOrderItemList(mapList);

order.setOrderItemList(orderItemList);
}

/**
* 把多个Map转换成多个OrderItem
* @param mapList
* @return
*/
private List<OrderItem> toOrderItemList(List<Map<String, Object>> mapList) {
List<OrderItem> orderItemList = new ArrayList<OrderItem>();
for(Map<String,Object> map : mapList) {
OrderItem orderItem = toOrderItem(map);
orderItemList.add(orderItem);
}
return orderItemList;
}

/*
* 把一个Map转换成一个OrderItem
*/
private OrderItem toOrderItem(Map<String, Object> map) {
OrderItem orderItem = CommonUtils.toBean(map, OrderItem.class);
Book book = CommonUtils.toBean(map, Book.class);
orderItem.setBook(book);
return orderItem;
}


OrderService

public PageBean<Order> myOrders(String uid,int pc)
{
try{
JdbcUtils.beginTransaction();
PageBean<Order> pb=orderDao.findByUser(uid, pc);
JdbcUtils.commitTransaction();
return pb;

}catch(SQLException e)
{
try {
JdbcUtils.rollbackTransaction();
} catch (SQLException e1) {
throw new RuntimeException(e);
}

}
return null;

}


OrderServlet

/**
* 获取当前页码
* @param req
* @return
*/
private int getPc(HttpServletRequest req) {
int pc = 1;
String param = req.getParameter("pc");
if(param != null && !param.trim().isEmpty()) {
try {
pc = Integer.parseInt(param);
} catch(RuntimeException e) {}
}
return pc;
}

/**
* 截取url,页面中的分页导航中需要使用它做为超链接的目标!
* @param req
* @return
*/
/*
* http://localhost:8080/goods/BookServlet?methed=findByCategory&cid=xxx&pc=3 * /goods/BookServlet + methed=findByCategory&cid=xxx&pc=3
*/
private String getUrl(HttpServletRequest req) {
String url = req.getRequestURI() + "?" + req.getQueryString();
/*
* 如果url中存在pc参数,截取掉,如果不存在那就不用截取。
*/
int index = url.lastIndexOf("&pc=");
if(index != -1) {
url = url.substring(0, index);
}
return url;
}

/**
* 我的订单
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
public String myOrders(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*
* 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1
*/
int pc = getPc(req);
/*
* 2. 得到url:...
*/
String url = getUrl(req);
/*
* 3. 从当前session中获取User
*/
User user = (User)req.getSession().getAttribute("sessionUser");

/*
* 4. 使用pc和cid调用service#findByCategory得到PageBean
*/
PageBean<Order> pb = orderService.myOrders(user.getUid(), pc);
/*
* 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp
*/
pb.setUrl(url);
req.setAttribute("pb", pb);
return "f:/jsps/order/list.jsp";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: