我先说用了几个框架吧,spring,hibernate,dwr,然后bean用的是annotation标记的:
其中商品和订单表,我用的是一对多
其中商品和订单表,我用的是一对多
Product bean
- @OneToMany(targetEntity = Order.class, cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
- @JoinColumn(name = "PRODUCTID")
- public List<Order> getOrders() {
- return orders;
- }
在DAO层里,我用了spring的hibernateDaoSupport,其中有个分页查询方法:
java 代码
- /**
- * 根据页码和每页的长度返回对象集合
- *
- * @param pageNo
- * 页码
- * @param pageSize
- * 每页的长度
- * @return
- */
- public Page<T> PageQuery(int pageNo,int pageSize){
- Criteria criteria = this.createCriteria();
- return this.pagedQuery(criteria, pageNo, pageSize);
- }
方法返回的page,我自己定义的一个封装了页面属性和内容的bean。
然后定义了一个service层的方法,调用DAO层的这个分页函数。
java 代码
- public List<Product> getProducts(int pageNo,int pageSize){
- return productDAO.PageQuery(pageNo, pageSize).getResult();
- }
JSP页面使用DWR调用service层的getProducts
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">
- <dwr>
- <allow>
- <create javascript="ProductService" creator="spring">
- <param name="beanName" value="productService"></param>
- <include method="loadProduct" />
- <include method="getProducts" />
- </create>
- </allow>
- </dwr>
再定义了JS函数
js 代码
- window.onload = function(){
- ProductService.getProducts(1,10,displayProducts);
- }
- function displayProducts(products){
- DWRUtil.removeAllRows("items");
- if (items.length == 0) {
- alert("No matching products found");
- $("products").style.visibility = "hidden";
- } else {
- DWRUtil.addRows("items",products,cellFunctions);
- $("products").style.visibility = "visible";
- }
- }
- /*
- * Array of functions to populate a row of the items table
- * using DWRUtil's addRows function
- */
- var cellFunctions =[
- function(product){return product.productname},
- function(product){return product.productdetail},
- function(product){return product.price},
- function(product) {
- var btn = document.createElement("button");
- btn.innerHTML = "Add to cart";
- btn.productId = product.id;
- btn.onclick = addToCartButtonHandler;
- return btn;
- }
- ];