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流程是一样,写法也类似

 

posted @ 2016-09-27 14:12  sincoolvip  阅读(2468)  评论(0编辑  收藏  举报