Goods:图书模块按分类查询各层实现
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">¥${book.currPrice}</span> 9 <span class="price_r">¥${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:图书模块按分类查询各层实现相关推荐
- bookStore第二篇【图书模块、前台页面】
图书模块 分析 在设计图书管理的时候,我们应该想到:图书和分类是有关系的.一个分类可以对应多本图书. 为什么要这样设计?这样更加人性化,用户在购买书籍的时候,用户能够查看相关分类后的图书,而不是全部图 ...
- 乐优商城之分类查询品牌查询(八)
文章目录 (一)编写分类查询 (二)跨域问题 (三)cors跨域原理 (四)解决跨域问题 (五)品牌查询页面分析 (六)品牌查询后台代码 (七)分页查询排序的原理 (八)axios (一)编写分类查询 ...
- 尚硅谷JavaWeb笔记——书城项目(第五阶段:图书模块(课程精华!!!!))
文章目录 第五阶段-图书模块 MVC说明 开发流程 Step1:编写图书模块的数据库表 Step2:编写图书模块的JavaBean对象 Step3:编写图书模块Dao和测试Dao 出现的问题:数据无法 ...
- 液晶显示模块的分类和基本知识
液晶显示模块 液晶显示模块是即"Liquid Crystal Display Module",简称"LCM",是一种将液晶显示器件.连接件.集成电路.PCB线路 ...
- CRM客户关系管理系统开发第十九讲——实现客户拜访记录管理模块中条件查询客户拜访记录列表的功能
在客户拜访记录列表页面上准备一些筛选条件 首先,咱得在客户拜访记录列表页面上准备一些筛选条件,不妨我们按照拜访时间来进行筛选.之前咱在实现联系人管理模块中条件查询联系人列表的功能时,文本输入框使用的是 ...
- CRM客户关系管理系统开发第十七讲——实现客户拜访记录管理模块中分页查询客户拜访记录列表的功能
在CRM客户关系管理系统中,客户的拜访是很重要的一个环节,由业务员面见客户并介绍公司的相关的业务,在业务员回到公司以后,需要对此次的拜访的整个过程记录下来,记录中需要包含拜访的客户的姓名,拜访的时间以 ...
- 使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据、输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元、使用什么激活函数?
使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据.输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元.使用什么激活函数? ...
- perl模块的安装,查询
perl模块的安装,查询 linux下cpan安装: # perl -MCPAN -e shell // 一路回车配置cpan,个别地方需要输入 cpan> instal ...
- 根据一级分类查询所有子级分类
根据一级分类查询所有子级分类 WITH a AS(SELECT * FROM view_SubjectList WHERE id=1UNION ALL SELECT s.* FROM view_Sub ...
最新文章
- Word文档使用密码加密
- GPS定位精度单位CEP、RMS、2DRMS
- Reids实战(7)数据类型五sorted sets
- linux内核环境变量,Linux上安装配置JDK环境变量
- 2021-03-29 标准化函数
- Mac终端Terminal使用
- 前端学习(2511):路径出错
- python爬新闻动态_Python爬取新闻动态评论
- Messari前主管:一旦L2证明其实力,BSC上的团队将会迁移回以太坊
- iOS8中添加的extensions总结(一)——今日扩展
- Eclipse JaveEE版本
- Java学习资料汇总
- python画图软件是哪个_python画图软件是哪个
- python猜数字十次、猜对输出猜了多少次_python-猜数字小练习
- try catch finally 执行简介
- QT ffmpeg 播放器
- 华住季琦谈未来酒店的趋势:传统星级酒店将会逐渐消亡与演变
- 《云原生入门级开发者认证》学习笔记之云原生架构总览
- php获取QQ音乐直链,~~~获取qq音乐外链方法+源码~~~
- 图表横坐标怎么改倾斜_Excel 图表横轴文字太长,不想让它倾斜,如何分行显示?...
热门文章
- 波士顿动力母公司最新机器人,就这?
- 「过拟合」也能废物利用了:有人用它高清重建3D物体表面,参数减少99%
- UCLA教授遭到举报后被停课!原因竟是不同意学生主张的“考试放水”
- 神仙打架激辩深度学习:LeCun出大招,马库斯放狠话,机器学习先驱隔空“互怼”...
- 波士顿动力副总给我写了一封信,在我莫名膨胀之后
- LINQ技术、EF技术都出来蛮久了,软件开发者、软件公司是否还有必要有自己的代码生成器?...
- 从深圳回武汉的面试感想以及一些面试题
- 20165302第八周总结
- keepalived双实例配置
- 学习社区以及网站总结