BookDao

  1  //按分类查询
  2       public PageBean<Book>  findByCategory(String cid,int pc) throws SQLException
  3       {
  4           List<Expression> exprList=new ArrayList<Expression>();
  5           exprList.add(new Expression("cid", "=", cid));
  6           return findByCriteria(exprList, pc);
  7
  8       }
  9
 10       //按书名做一个模糊查询
 11       public PageBean<Book>  findByBname(String bname,int pc) throws SQLException
 12       {
 13           List<Expression> exprList=new ArrayList<Expression>();
 14           exprList.add(new Expression("bname", "like", "%"+bname+"%"));
 15           return findByCriteria(exprList, pc);
 16
 17       }
 18
 19       //按作者查询
 20       public PageBean<Book>  findByAuthor(String author,int pc) throws SQLException
 21       {
 22           List<Expression> exprList=new ArrayList<Expression>();
 23           exprList.add(new Expression("author", "like", "%"+author+"%"));
 24           return findByCriteria(exprList, pc);
 25
 26       }
 27
 28
 29       //按出版社查询
 30       public PageBean<Book>  findByPress(String press,int pc) throws SQLException
 31       {
 32           List<Expression> exprList=new ArrayList<Expression>();
 33           exprList.add(new Expression("press", "like", "%"+press+"%"));
 34           return findByCriteria(exprList, pc);
 35
 36       }
 37       //多条件组合查询  book对象本身就是条件
 38       public PageBean<Book>  findByCombination(Book criteria,int pc) throws SQLException
 39       {
 40           List<Expression> exprList=new ArrayList<Expression>();
 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<Book> findByCriteria(List<Expression> 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<Object> params=new ArrayList<Object>(); //它是对应问号的值
 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<Book> beanList=qr.query(sql, new BeanListHandler<Book>(Book.class),params.toArray());
 92           //丢了cid  若需要cid 改map 自己映射
 93
 94           //创建pageBean 设置参数 其中pageBean 没有url这一项 这个任务由servlet来得到
 95           PageBean<Book> pb=new PageBean<Book>();
 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<Book> 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<Book> 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<Book> 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<Book> 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<Book> 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/BookServlet
18         //getRequestURI()获取/goods/BookServlet
19         //req.getQueryString()获取method=findByCategory&cid=xxx
20         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=1
34         int pc=getPc(req);
35
36         //2得到url
37         String url=getUrl(req);
38         //3获取查询条件 本方法是cid 即分类id
39         String cid=req.getParameter("cid");
40
41         //使用pc cid 调用service
42         PageBean<Book> 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 <ul>
 2         <c:forEach items="${pb.beanList}" var="book">
 3         <li>
 4                 <div class="inner">
 5                     <a class="pic" href="<c:url value='/jsps/book/desc.jsp'/>"><img
 6                         src="<c:url value='/${book.image_b }'/>" border="0" /> </a>
 7                     <p class="price">
 8                         <span class="price_n">&yen;${book.currPrice}</span>
 9                         <span class="price_r">&yen;${book.price}</span>
10                         (<span class="price_s">${book.discount}折</span>)
11                     </p>
12                     <p>
13                         <a id="bookname"
14                             title="${book.bname }"
15                             href="<c:url value='/jsps/book/desc.jsp'/>">${book.bname }</a>
16                     </p>
17                     <p>
18                         <a href="<c:url value='/jsps/book/list.jsp'/>" name='P_zz'
19                             title='Craig Walls'>${book.author }</a>
20                     </p>
21                     <p class="publishing">
22                         <span>出 版 社:</span><a href="<c:url value='/jsps/book/list.jsp'/>">${book.press} }</a>
23                     </p>
24                     <p class="publishing_time">
25                         <span>出版时间:</span>${book.publishtime}
26                     </p>
27                 </div></li>
28         </c:forEach>
29
30
31     </ul>

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

Goods:图书模块按分类查询各层实现相关推荐

  1. bookStore第二篇【图书模块、前台页面】

    图书模块 分析 在设计图书管理的时候,我们应该想到:图书和分类是有关系的.一个分类可以对应多本图书. 为什么要这样设计?这样更加人性化,用户在购买书籍的时候,用户能够查看相关分类后的图书,而不是全部图 ...

  2. 乐优商城之分类查询品牌查询(八)

    文章目录 (一)编写分类查询 (二)跨域问题 (三)cors跨域原理 (四)解决跨域问题 (五)品牌查询页面分析 (六)品牌查询后台代码 (七)分页查询排序的原理 (八)axios (一)编写分类查询 ...

  3. 尚硅谷JavaWeb笔记——书城项目(第五阶段:图书模块(课程精华!!!!))

    文章目录 第五阶段-图书模块 MVC说明 开发流程 Step1:编写图书模块的数据库表 Step2:编写图书模块的JavaBean对象 Step3:编写图书模块Dao和测试Dao 出现的问题:数据无法 ...

  4. 液晶显示模块的分类和基本知识

    液晶显示模块 液晶显示模块是即"Liquid Crystal Display Module",简称"LCM",是一种将液晶显示器件.连接件.集成电路.PCB线路 ...

  5. CRM客户关系管理系统开发第十九讲——实现客户拜访记录管理模块中条件查询客户拜访记录列表的功能

    在客户拜访记录列表页面上准备一些筛选条件 首先,咱得在客户拜访记录列表页面上准备一些筛选条件,不妨我们按照拜访时间来进行筛选.之前咱在实现联系人管理模块中条件查询联系人列表的功能时,文本输入框使用的是 ...

  6. CRM客户关系管理系统开发第十七讲——实现客户拜访记录管理模块中分页查询客户拜访记录列表的功能

    在CRM客户关系管理系统中,客户的拜访是很重要的一个环节,由业务员面见客户并介绍公司的相关的业务,在业务员回到公司以后,需要对此次的拜访的整个过程记录下来,记录中需要包含拜访的客户的姓名,拜访的时间以 ...

  7. 使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据、输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元、使用什么激活函数?

    使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据.输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元.使用什么激活函数? ...

  8. perl模块的安装,查询

    perl模块的安装,查询 linux下cpan安装: # perl -MCPAN -e shell             // 一路回车配置cpan,个别地方需要输入 cpan> instal ...

  9. 根据一级分类查询所有子级分类

    根据一级分类查询所有子级分类 WITH a AS(SELECT * FROM view_SubjectList WHERE id=1UNION ALL SELECT s.* FROM view_Sub ...

最新文章

  1. Word文档使用密码加密
  2. GPS定位精度单位CEP、RMS、2DRMS
  3. Reids实战(7)数据类型五sorted sets
  4. linux内核环境变量,Linux上安装配置JDK环境变量
  5. 2021-03-29 标准化函数
  6. Mac终端Terminal使用
  7. 前端学习(2511):路径出错
  8. python爬新闻动态_Python爬取新闻动态评论
  9. Messari前主管:一旦L2证明其实力,BSC上的团队将会迁移回以太坊
  10. iOS8中添加的extensions总结(一)——今日扩展
  11. Eclipse JaveEE版本
  12. Java学习资料汇总
  13. python画图软件是哪个_python画图软件是哪个
  14. python猜数字十次、猜对输出猜了多少次_python-猜数字小练习
  15. try catch finally 执行简介
  16. QT ffmpeg 播放器
  17. 华住季琦谈未来酒店的趋势:传统星级酒店将会逐渐消亡与演变
  18. 《云原生入门级开发者认证》学习笔记之云原生架构总览
  19. php获取QQ音乐直链,~~~获取qq音乐外链方法+源码~~~
  20. 图表横坐标怎么改倾斜_Excel 图表横轴文字太长,不想让它倾斜,如何分行显示?...

热门文章

  1. 波士顿动力母公司最新机器人,就这?
  2. 「过拟合」也能废物利用了:有人用它高清重建3D物体表面,参数减少99%
  3. UCLA教授遭到举报后被停课!原因竟是不同意学生主张的“考试放水”
  4. 神仙打架激辩深度学习:LeCun出大招,马库斯放狠话,机器学习先驱隔空“互怼”...
  5. 波士顿动力副总给我写了一封信,在我莫名膨胀之后
  6. LINQ技术、EF技术都出来蛮久了,软件开发者、软件公司是否还有必要有自己的代码生成器?...
  7. 从深圳回武汉的面试感想以及一些面试题
  8. 20165302第八周总结
  9. keepalived双实例配置
  10. 学习社区以及网站总结