博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Goods:图书模块按分类查询各层实现
阅读量:6113 次
发布时间:2019-06-21

本文共 7117 字,大约阅读时间需要 23 分钟。

BookDao

1  //按分类查询  2       public PageBean
findByCategory(String cid,int pc) throws SQLException 3 { 4 List
exprList=new ArrayList
(); 5 exprList.add(new Expression("cid", "=", cid)); 6 return findByCriteria(exprList, pc); 7 8 } 9 10 //按书名做一个模糊查询 11 public PageBean
findByBname(String bname,int pc) throws SQLException 12 { 13 List
exprList=new ArrayList
(); 14 exprList.add(new Expression("bname", "like", "%"+bname+"%")); 15 return findByCriteria(exprList, pc); 16 17 } 18 19 //按作者查询 20 public PageBean
findByAuthor(String author,int pc) throws SQLException 21 { 22 List
exprList=new ArrayList
(); 23 exprList.add(new Expression("author", "like", "%"+author+"%")); 24 return findByCriteria(exprList, pc); 25 26 } 27 28 29 //按出版社查询 30 public PageBean
findByPress(String press,int pc) throws SQLException 31 { 32 List
exprList=new ArrayList
(); 33 exprList.add(new Expression("press", "like", "%"+press+"%")); 34 return findByCriteria(exprList, pc); 35 36 } 37 //多条件组合查询 book对象本身就是条件 38 public PageBean
findByCombination(Book criteria,int pc) throws SQLException 39 { 40 List
exprList=new ArrayList
(); 41 exprList.add(new Expression("bname", "like", "%"+criteria.getBname()+"%")); 42 exprList.add(new Expression("author", "like", "%"+criteria.getAuthor()+"%")); 43 exprList.add(new Expression("press", "like", "%"+criteria.getPress()+"%")); 44 return findByCriteria(exprList, pc); 45 46 } 47 48 // 49 50 /* 51 * 通用的查询方法 52 */ 53 private PageBean
findByCriteria(List
exprList,int pc) throws SQLException 54 { 55 /* 56 * 1、得到ps 57 * 2\得到tr 总记录数 通过 通过exprList生成where子句 58 * 3\得到beanlist 59 * 4\创建PageBean 返回 60 */ 61 //得到ps 62 int ps=PageConstants.BOOK_PAGE_SIZE; 63 /* 64 *总记录数 通过exprList生成where子句 select * from t_book where 1=1 and .. 65 *条件语句不好控制所以为了后面统一 在前面先给个1=1 后面统一用and 开头 拼凑sql语句的一重要技巧 66 */ 67 StringBuilder whereSql=new StringBuilder("where 1=1"); 68 List
params=new ArrayList(); //它是对应问号的值 69 70 for(Expression expr:exprList) 71 { 72 whereSql.append(" and ").append(expr.getName()).append(" "). 73 append(expr.getOpertator()).append(" "); 74 75 if(!expr.getOpertator().equals("is null")) 76 { 77 whereSql.append("?"); 78 params.add(expr.getValue()); 79 } 80 } 81 82 //总记录数 83 String sql="select count(*) from t_book "+whereSql; 84 Number number=(Number) qr.query(sql, new ScalarHandler(),params); 85 int tr=number.intValue(); //得到了总记录数 86 87 //得到beanList 即当前页记录 88 sql = "select * from t_book " + whereSql + " order by orderBy limit ?,?"; 89 params.add((pc-1)*ps); //第一个问号 (2-1)*8 当前页首行记录的下标 90 params.add(ps); //一共查询几行 91 List
beanList=qr.query(sql, new BeanListHandler
(Book.class),params.toArray()); 92 //丢了cid 若需要cid 改map 自己映射 93 94 //创建pageBean 设置参数 其中pageBean 没有url这一项 这个任务由servlet来得到 95 PageBean
pb=new PageBean
(); 96 pb.setPc(pc); 97 pb.setPs(ps); 98 pb.setTr(tr); 99 pb.setBeanList(beanList);100 101 return pb;102 }103 104 105 }
View Code

 

BookService

1 /* 2  * 图书模块业务层 3  */ 4 public class BookService { 5     private BookDao bookDao = new BookDao(); 6  7     public PageBean
findByCategory(String cid, int pc) { 8 9 try {10 return bookDao.findByCategory(cid, pc);11 } catch (SQLException e) {12 throw new RuntimeException(e);13 }14 15 }16 17 // 按书名查询18 19 public PageBean
findByBname(String bname, int pc) {20 21 try {22 return bookDao.findByBname(bname, pc);23 } catch (SQLException e) {24 throw new RuntimeException(e);25 }26 27 }28 29 // 按作者查询30 public PageBean
findByAuthor(String author, int pc) {31 32 try {33 return bookDao.findByAuthor(author, pc);34 } catch (SQLException e) {35 throw new RuntimeException(e);36 }37 38 }39 40 // 按出版社查询41 public PageBean
findByPress(String press, int pc) {42 43 try {44 return bookDao.findByAuthor(press, pc);45 } catch (SQLException e) {46 throw new RuntimeException(e);47 }48 49 }50 51 //多条件组合查询52 public PageBean
findByCombination(Book criteria, int pc)53 throws SQLException {54 try {55 return bookDao.findByCombination(criteria, pc);56 } catch (SQLException e) {57 throw new RuntimeException(e);58 }59 60 }61 62 }
View Code

BookServlet

1 //获取当前页码值 2     private int getPc(HttpServletRequest req) 3     { 4         int pc=1; 5         String param=req.getParameter("pc"); 6         if(param!=null&&!param.trim().isEmpty()) 7         {    8             try{ 9             pc=Integer.parseInt(param);10             }catch(RuntimeException e){}11         }12         return pc;13     }14 15     //获取url  截取url 页面中的分页导航中使用它作为超链接的目标  还带了条件 保证条件不丢16     private String getUrl(HttpServletRequest req)17     {    //http://localhost:8080//goods/BookServlet18         //getRequestURI()获取/goods/BookServlet19         //req.getQueryString()获取method=findByCategory&cid=xxx20         String url=req.getRequestURI()+"?"+req.getQueryString();21         //如果url中存在pc参数 截取掉 如果不存在则不用截取22         int index=url.lastIndexOf("&pc=");23         if(index!=-1)24         {25             url=url.substring(0,index);26         }27         return url;28     }29 30     public String findByCategory(HttpServletRequest req, HttpServletResponse resp)31             throws ServletException, IOException {32         33         //得到pc 如果页面传递使用页面的 如果没传pc=134         int pc=getPc(req);35         36         //2得到url37         String url=getUrl(req);38         //3获取查询条件 本方法是cid 即分类id39         String cid=req.getParameter("cid");40         41         //使用pc cid 调用service 42         PageBean
pb=bookService.findByCategory(cid,pc);43 //使用pageBean设置url 保存pageBean 转发到/jsps/book/list.jsp页面44 pb.setUrl(url); 45 req.setAttribute("pb", pb);46 return "f:/jsps/book/list.jsp";47 48 49 }
View Code

 

left.jsp

1 

 

转载于:https://www.cnblogs.com/xiaoying1245970347/p/4780610.html

你可能感兴趣的文章
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>