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流程是一樣,寫法也類似

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM