zoukankan      html  css  js  c++  java
  • JSP+Servlet+javabean+oracle实现页面多条件模糊查询

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

    oracle的数据源配置也不同:

    driverName=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
    username=marketManager
    pwd=marketManager

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

    package pb.market.com.cn.dao.impl;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import pb.market.com.cn.dao.ProviderDao;
    import pb.market.com.cn.pojo.Provider;
    import pb.market.com.cn.util.BaseDao;
    
    public class ProviderDaoImpl extends BaseDao implements ProviderDao {
    
        //获取供应商列表
        public List<Provider> getProviderList(int pageNo, int pageSize, String where) {
            List<Provider> providerList =new ArrayList<Provider>();
            String sql="select * from ( select rownum as r,a.* from gongyingshang a where "+where+" rownum<=? ) where r>?";
            Object[] params ={pageSize*pageNo,(pageNo-1)*pageSize};
            if(this.getConnection()){
                System.out.println(sql);
                ResultSet rs = this.executeQuery(sql, params);
                try {
                    while(rs.next()){
                        Provider provider = new Provider();
                        provider.setId(rs.getInt("id"));
                        provider.setGysno(rs.getInt("gysno"));
                        provider.setGysname(rs.getString("gysname"));
                        provider.setGystel(rs.getString("gystel"));
                        provider.setGysfax(rs.getString("gysfax"));
                        provider.setCreatedate(rs.getTimestamp("createdate"));
                        provider.setCreateby(rs.getString("createby"));
                        provider.setModifydate(rs.getTimestamp("modifydate"));
                        provider.setModifyby(rs.getString("modifyby"));
                        providerList.add(provider);
                        
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally{
                    this.closeConnection();
                }
            }
            return providerList;
        }
        /*public static void main(String[] args) {
            
            ProviderDao dd=new ProviderDaoImpl();
            String where="金";
            String where1="gysname like '%"+where+"%' and";
            List<Provider> providerList =dd.getProviderList(1, 5, where1);
            
            for (Provider provider : providerList) {
                System.out.println("11111111111111");
                System.out.println(provider.getId());
            }
        
        }*/
    
        //获取供应商总数量
        public int getProviderCount(String where) {
            int count=0;
            String sql="select count(*)as count from gongyingshang "+where;
            Object[] params={};
            if(this.getConnection()){
                ResultSet rs  =this.executeQuery(sql, params);
                try {
                    if(rs.next()){
                        count = rs.getInt("count");
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }finally{
                    this.closeConnection();
                }
            }
            return count;
        }
    }

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

    package pb.market.com.cn.service.impl;
    
    import java.util.List;
    
    import pb.market.com.cn.dao.ProviderDao;
    import pb.market.com.cn.dao.impl.ProviderDaoImpl;
    import pb.market.com.cn.pojo.Provider;
    import pb.market.com.cn.service.ProviderService;
    
    public class ProviderServiceImpl implements ProviderService {
        private ProviderDao providerDao;
        public ProviderServiceImpl(){
            providerDao=new ProviderDaoImpl();
        }
        public List<Provider> getProviderList(int pageNo, int pageSize, String where) {
            return providerDao.getProviderList(pageNo, pageSize, where);
        }
        public int getProviderCount(String where) {
            return providerDao.getProviderCount(where);
        }
    
    }

    servlet:

    package pb.market.com.cn.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import pb.market.com.cn.pojo.Provider;
    import pb.market.com.cn.service.ProviderService;
    import pb.market.com.cn.service.impl.ProviderServiceImpl;
    
    public class ProviderListServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try{
                request.setCharacterEncoding("utf-8");
                response.setCharacterEncoding("utf-8");
                ProviderService providerService =new ProviderServiceImpl();
                StringBuffer sb =new StringBuffer(1024);
                StringBuffer sb1 =new StringBuffer(1024);
                //获取模糊查询的值
                String where = request.getParameter("proName");
                //System.out.println("where================="+where);
                //如果为空
                if(where!=null && !"".equals(where)){
                    sb.append("where gysname like '%"+where+"%'");
                    sb1.append("gysname like '%"+where+"%' and");
                }
                //设置每页显示3条
                int pageSize=3;
                //得总条数
                int totalCount =providerService.getProviderCount(sb.toString());
                
                //得到总页数,如果总页数对一页的量取模==0,则。。。
                int totalPageCount=0;
                if((totalCount%pageSize)==0){
                    totalPageCount=totalCount/pageSize;
                }else{
                    totalPageCount=totalCount/pageSize +1;
                }
                //获取当前页,默认一打开进来即是第1页
                String pageIndex = request.getParameter("pageIndex");
                //System.out.println("pageIndex==============="+pageIndex);
                int currentPageNo=0;
                if(pageIndex==null){
                    currentPageNo=1;
                }else{
                    //System.out.println("这里怎么可能进得来???????????");
                    currentPageNo= Integer.parseInt(pageIndex);
                }
                
                // 首页和尾页的异常控制
                if (currentPageNo <= 0) {
                    currentPageNo = 1;
                } else if (currentPageNo > totalPageCount) {
                    currentPageNo = totalPageCount;
                }
                //把各个页码传给JSp
                request.setAttribute("pageSize", pageSize);
                request.setAttribute("totalCount", totalCount);
                request.setAttribute("totalPageCount", totalPageCount);
                request.setAttribute("currentPageNo", currentPageNo);
                //获取providerList
                List<Provider> providerList = providerService.getProviderList(currentPageNo, pageSize, sb1.toString());
                request.setAttribute("providerList", providerList);
                request.getRequestDispatcher("/jsp/providerList.jsp").forward(request, response);
                
            }catch(Exception e){
                e.printStackTrace();
            }
            
            
        }
    
        
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
            
        }
    
    }

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

  • 相关阅读:
    <2016-1-28>
    <页面里折合与打开>
    右上角鼠标滑过展开收缩动画效果js代码的演示页面
    30款css3实现的鼠标经过图片显示描述特效
    dede让channelartlist标签支持currentstyle属性 完美解决
    织梦导航 currentstyle 点击li添加class类 样式
    论坛首页显示板块,但没有权限点不进去
    医疗窗口右下角弹出抖动效果
    joomla搬家之后打不开 首页404错误
    Discuz X3游客看小图功能导致文字内容隐藏的【修复方法】
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/5912623.html
Copyright © 2011-2022 走看看