之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写oracle,查了一下资料试了一下,把代码帖出来

oracle的数据源配置也不同:

  1. driverName=oracle.jdbc.driver.OracleDriver
  2. url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:orcl
  3. username=marketManager
  4. pwd=marketManager

直接帖实现类(特别注意红色代码体):

  1. package pb.market.com.cn.dao.impl;
  2.  
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import pb.market.com.cn.dao.ProviderDao;
  9. import pb.market.com.cn.pojo.Provider;
  10. import pb.market.com.cn.util.BaseDao;
  11.  
  12. public class ProviderDaoImpl extends BaseDao implements ProviderDao {
  13.  
  14. //获取供应商列表
  15. public List<Provider> getProviderList(int pageNo, int pageSize, String where) {
  16. List<Provider> providerList =new ArrayList<Provider>();
  17. String sql="select * from ( select rownum as r,a.* from gongyingshang a where "+where+" rownum<=? ) where r>?";
  18. Object[] params ={pageSize*pageNo,(pageNo-1)*pageSize};
  19. if(this.getConnection()){
  20. System.out.println(sql);
  21. ResultSet rs = this.executeQuery(sql, params);
  22. try {
  23. while(rs.next()){
  24. Provider provider = new Provider();
  25. provider.setId(rs.getInt("id"));
  26. provider.setGysno(rs.getInt("gysno"));
  27. provider.setGysname(rs.getString("gysname"));
  28. provider.setGystel(rs.getString("gystel"));
  29. provider.setGysfax(rs.getString("gysfax"));
  30. provider.setCreatedate(rs.getTimestamp("createdate"));
  31. provider.setCreateby(rs.getString("createby"));
  32. provider.setModifydate(rs.getTimestamp("modifydate"));
  33. provider.setModifyby(rs.getString("modifyby"));
  34. providerList.add(provider);
  35.  
  36. }
  37. } catch (SQLException e) {
  38. e.printStackTrace();
  39. }finally{
  40. this.closeConnection();
  41. }
  42. }
  43. return providerList;
  44. }
  45. /*public static void main(String[] args) {
  46.  
  47. ProviderDao dd=new ProviderDaoImpl();
  48. String where="金";
  49. String where1="gysname like '%"+where+"%' and";
  50. List<Provider> providerList =dd.getProviderList(1, 5, where1);
  51.  
  52. for (Provider provider : providerList) {
  53. System.out.println("11111111111111");
  54. System.out.println(provider.getId());
  55. }
  56.  
  57. }*/
  58.  
  59. //获取供应商总数量
  60. public int getProviderCount(String where) {
  61. int count=0;
  62. String sql="select count(*)as count from gongyingshang "+where;
  63. Object[] params={};
  64. if(this.getConnection()){
  65. ResultSet rs =this.executeQuery(sql, params);
  66. try {
  67. if(rs.next()){
  68. count = rs.getInt("count");
  69. }
  70. } catch (SQLException e) {
  71. e.printStackTrace();
  72. }finally{
  73. this.closeConnection();
  74. }
  75. }
  76. return count;
  77. }
  78. }

中间的service实现类,我的业务较简单,service层基本不做什么,只是调用一下dao层实现类的方法而已:

  1. package pb.market.com.cn.service.impl;
  2.  
  3. import java.util.List;
  4.  
  5. import pb.market.com.cn.dao.ProviderDao;
  6. import pb.market.com.cn.dao.impl.ProviderDaoImpl;
  7. import pb.market.com.cn.pojo.Provider;
  8. import pb.market.com.cn.service.ProviderService;
  9.  
  10. public class ProviderServiceImpl implements ProviderService {
  11. private ProviderDao providerDao;
  12. public ProviderServiceImpl(){
  13. providerDao=new ProviderDaoImpl();
  14. }
  15. public List<Provider> getProviderList(int pageNo, int pageSize, String where) {
  16. return providerDao.getProviderList(pageNo, pageSize, where);
  17. }
  18. public int getProviderCount(String where) {
  19. return providerDao.getProviderCount(where);
  20. }
  21.  
  22. }

servlet:

  1. package pb.market.com.cn.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.List;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import pb.market.com.cn.pojo.Provider;
  13. import pb.market.com.cn.service.ProviderService;
  14. import pb.market.com.cn.service.impl.ProviderServiceImpl;
  15.  
  16. public class ProviderListServlet extends HttpServlet {
  17.  
  18. public void doGet(HttpServletRequest request, HttpServletResponse response)
  19. throws ServletException, IOException {
  20. try{
  21. request.setCharacterEncoding("utf-8");
  22. response.setCharacterEncoding("utf-8");
  23. ProviderService providerService =new ProviderServiceImpl();
  24. StringBuffer sb =new StringBuffer(1024);
  25. StringBuffer sb1 =new StringBuffer(1024);
  26. //获取模糊查询的值
  27. String where = request.getParameter("proName");
  28. //System.out.println("where================="+where);
  29. //如果为空
  30. if(where!=null && !"".equals(where)){
  31. sb.append("where gysname like '%"+where+"%'");
  32. sb1.append("gysname like '%"+where+"%' and");
  33. }
  34. //设置每页显示3条
  35. int pageSize=3;
  36. //得总条数
  37. int totalCount =providerService.getProviderCount(sb.toString());
  38.  
  39. //得到总页数,如果总页数对一页的量取模==0,则。。。
  40. int totalPageCount=0;
  41. if((totalCount%pageSize)==0){
  42. totalPageCount=totalCount/pageSize;
  43. }else{
  44. totalPageCount=totalCount/pageSize +1;
  45. }
  46. //获取当前页,默认一打开进来即是第1页
  47. String pageIndex = request.getParameter("pageIndex");
  48. //System.out.println("pageIndex==============="+pageIndex);
  49. int currentPageNo=0;
  50. if(pageIndex==null){
  51. currentPageNo=1;
  52. }else{
  53. //System.out.println("这里怎么可能进得来???????????");
  54. currentPageNo= Integer.parseInt(pageIndex);
  55. }
  56.  
  57. // 首页和尾页的异常控制
  58. if (currentPageNo <= 0) {
  59. currentPageNo = 1;
  60. } else if (currentPageNo > totalPageCount) {
  61. currentPageNo = totalPageCount;
  62. }
  63. //把各个页码传给JSp
  64. request.setAttribute("pageSize", pageSize);
  65. request.setAttribute("totalCount", totalCount);
  66. request.setAttribute("totalPageCount", totalPageCount);
  67. request.setAttribute("currentPageNo", currentPageNo);
  68. //获取providerList
  69. List<Provider> providerList = providerService.getProviderList(currentPageNo, pageSize, sb1.toString());
  70. request.setAttribute("providerList", providerList);
  71. request.getRequestDispatcher("/jsp/providerList.jsp").forward(request, response);
  72.  
  73. }catch(Exception e){
  74. e.printStackTrace();
  75. }
  76.  
  77. }
  78.  
  79. public void doPost(HttpServletRequest request, HttpServletResponse response)
  80. throws ServletException, IOException {
  81. doGet(request, response);
  82.  
  83. }
  84.  
  85. }

后面的JSP页面我就省略不写了。。。。。跟文头说的那篇mysql流程是一样,写法也类似

JSP+Servlet+javabean+oracle实现页面多条件模糊查询的更多相关文章

  1. JSP+Servlet+javabean+mysql实现页面多条件模糊查询

    需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标 ...

  2. 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)

    在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...

  3. JSP中使用的模式——JSP+Servlet+JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  4. MVC jsp+servlet+javabean 连接Mysql数据库測试demo

    本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...

  5. jsp+servlet+javabean开发web项目

    一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...

  6. (jsp+servlet+javabean )MVC架构

    MVC是三个单词的缩写,这三个单词分别为:模型.视图和控制. 使用的MVC的目的:在于将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如Windows系统资源管理器文件夹内容的显示方 ...

  7. Jsp+Servlet+JavaBean经典MVC模式理解

    MVC模式目的(实现Web系统的职能分工). 在Java EE中,Jsp+Servlet+JavaBean算是里面经典的模式,是初学者必备的知识技能.M, Model(模型)实现系统的业务逻辑 1.通 ...

  8. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

随机推荐

  1. ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器

    ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器一:闲谈一下:1.现在任务跟踪管理系统已经开发快要结束了,抽一点时间来写一下,想一想自己就有成就感啊!!  ...

  2. HTTP请求头参数

      Accept-Language: zh-cn,zh;q=0.5 意思:浏览器支持的语言分别是中文和简体中文,优先支持简体中文. 详解: Accept-Language表示浏览器所支持的语言类型: ...

  3. 转一篇Unity的相机动画控制

    最近真是忙,连研究细看的时间都没有了,原帖地址:https://alastaira.wordpress.com/2013/11/08/smooth-unity-camera-transitions-w ...

  4. HTML问题集锦

    [1]HTML5怎么设置滚动字幕 <marquee direction=up behavior=scroll loop=3 scrollamount=1 scrolldelay=10 align ...

  5. RHCE认证考试教材

    前段时间考RHCE7,顺便给大家分享下RHCE6.7的中文教材!毕竟此书是官方的培训教材,还是值得看看!RHEL6.7承前启后的,给个赞! 下载:http://pan.baidu.com/s/1nu9 ...

  6. Python基础-字符串格式化_百分号方式_format方式

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  7. python环境搭建-设置PyCharm软件的配色方案和Python解释器

    设置PyCharm软件的配色方案 设置Python解释器(用于Python2 or 3 的切换)

  8. 0921MySQL 报错 ERROR 1290 (HY000): running with the --secure-file-priv

    http://blog.itpub.net/26506993/viewspace-2121850/ mysql> show variables like '%secure%';+-------- ...

  9. RabbitMQ 路由选择 (Routing)

    让日志接收者能够订阅部分消息.例如,我们可以仅仅将致命的错误写入日志文件,然而仍然在控制面板上打印出所有的其他类型的日志消息. 1.绑定(Bindings) 在前面中我们已经使用过绑定.类似下面的代码 ...

  10. Android-动画简介

    Android中动画分为3种: ween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果,即是一种渐变动画: 也称View动画:也叫渐变动画,针对View的动画, ...