package com.mkk.goods.books.bookDao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.mkk.goods.books.domain.Book;
import com.mkk.goods.paper.Expression;
import com.mkk.goods.paper.Page;
import com.mkk.goods.paper.PageConstant;
import cn.itcast.jdbc.TxQueryRunner;
/*
* 图书相关数据库操作
*/
public class BookDao {
QueryRunner queryRunner = new TxQueryRunner();
/**********************具体的查询方法 *************************************/
/*
* 5.多条件查询
*/
public Page findByThreeCriteria(Book book,int pageNow) throws SQLException{
List listEx=new ArrayList();
listEx.add(new Expression("author","like","%"+book.getAuthor()+"%"));
listEx.add(new Expression("bname","like","%"+book.getBname()+"%"));
listEx.add(new Expression("press","like","%"+book.getPress()+"%"));
return findByCriteria(listEx, pageNow);
}
/*
* 4.按出版社查询
*
*/
public Page findByPress(String press,int pageNow) throws SQLException{
List listEx=new ArrayList();
listEx.add(new Expression("press","like","%"+press+"%"));
return findByCriteria(listEx, pageNow);
}
/*
* 3.按作者查询
*/
public Page findByAuthor(String author,int pageNow) throws SQLException{
List listEx=new ArrayList();
listEx.add(new Expression("author","like","%"+author+"%"));
return findByCriteria(listEx, pageNow);
}
/*
* 2.按书名查询
*/
public Page findByBname(String bname,int pageNow) throws SQLException{
List listEx=new ArrayList();
listEx.add(new Expression("bname","like","%"+bname+"%"));
return findByCriteria(listEx, pageNow);
}
/*
* 1.按分类查询
*/
public Page findByCategory(String cid, int pageNow) throws SQLException{
/*
* 1)设置查询的表达式
*/
Expression ex=new Expression("cid","=",cid);
List listEx=new ArrayList();
listEx.add(ex);
Page p= findByCriteria(listEx, pageNow);
return p;
}
/**********************下面是查询的工具类*********************************/
/*
* 1.通用条件查询criteria
* -->是一个工具查询类,方便查询方法使用
*/
private Page findByCriteria(List listExpression,int pageNow) throws SQLException{
int pageSize = PageConstant.PAGE_SICE;//每页显示book数据的大小
/*
* 1.这里开始拼接sql语句
*/
StringBuilder whereSql = new StringBuilder("where 1=1 ");
List
下面是需要的包类
package com.mkk.goods.books.domain;
import com.mkk.good.category.domain.Category;
public class Book {
private String bid;//书号
private String bname;//书名
private String author;//作者
private String price;//价格
private String currPrice;//当前价格
private String discount;//折扣
private String press;//出版社
private String publishtime;//出版时间
private int edition;//版次
private int pageNum;//页数
private int wordNum;//字数
private String printtime;//印刷时间
private int booksize;//开本
private String paper;//纸质类型
private Category category;//所属分类
private String image_b;//大图路径
private String image_w;//小图路径
public String getBid() {
return bid;
}
public void setBid(String bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getCurrPrice() {
return currPrice;
}
public void setCurrPrice(String currPrice) {
this.currPrice = currPrice;
}
public String getDiscount() {
return discount;
}
public void setDiscount(String discount) {
this.discount = discount;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public int getEdition() {
return edition;
}
public void setEdition(int edition) {
this.edition = edition;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getWordNum() {
return wordNum;
}
public void setWordNum(int wordNum) {
this.wordNum = wordNum;
}
public String getPrinttime() {
return printtime;
}
public void setPrinttime(String printtime) {
this.printtime = printtime;
}
public int getBooksize() {
return booksize;
}
public void setBooksize(int booksize) {
this.booksize = booksize;
}
public String getPaper() {
return paper;
}
public void setPaper(String paper) {
this.paper = paper;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public String getImage_b() {
return image_b;
}
public void setImage_b(String image_b) {
this.image_b = image_b;
}
public String getImage_w() {
return image_w;
}
public void setImage_w(String image_w) {
this.image_w = image_w;
}
public String getPublishtime() {
return publishtime;
}
public void setPublishtime(String publishtime) {
this.publishtime = publishtime;
}
}
package com.mkk.goods.paper;
import java.util.List;
/*
*这个是dao最后返回的类型用于做分页
*/
/*
* 分页相关内容
*/
public class Page {
private int pageSize;//每页多少条数
private int totalCount;//总条数
private int pageNow;//当前页
private String url;//请求的路径,如:/BookServlet?method=XXX&pageNow=2......
private List listBean;//需要分页的bean对象,泛型,更加的灵活
int totalPage =getTotalCount();
public int getTotalPage(){//得到总的页数
int totalPage = totalCount / pageSize;
return totalCount%pageSize==0?totalPage:(totalPage+1);
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public List getListBean() {
return listBean;
}
public void setListBean(List listBean) {
this.listBean = listBean;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
}
package com.mkk.goods.paper;
/*
* 这个是表达式类,用于装各种条件的集合
*/
public class Expression {//表达式类
private String name;
private String operator;
private String value;
public Expression() {
super();
}
public Expression(String name, String operator, String value) {
super();
this.name = name;
this.operator = operator;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}
}