queryutil.java

来自「基于SSH (struts+spring+hibernate)框架设计的 C」· Java 代码 · 共 223 行

JAVA
223
字号
package com.csu.crm.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.csu.crm.common.DBConnection;
import com.csu.crm.common.dao.original.CrmAreaDAO;
import com.csu.crm.common.dao.original.CrmBankDAO;
import com.csu.crm.common.dao.original.CrmCuLevDAO;
import com.csu.crm.common.dao.original.CrmCuStateDAO;
import com.csu.crm.common.dao.original.CrmCustomerDAO;
import com.csu.crm.common.dao.original.CrmEntCreditDAO;
import com.csu.crm.common.dao.original.CrmEntIndustryDAO;
import com.csu.crm.common.dao.original.CrmEntPropertyDAO;
import com.csu.crm.common.page.PageinationVO;
import com.csu.crm.common.page.PaginationDAO;
import com.csu.crm.common.vo.CrmCustomer;
import com.csu.crm.customer.vo.CrmCustomerVO;
/**
 * 此类统一处理 当查询带有条件时,进行匹配查询
 * 
 * @author 3eCRM小组:曾东
 * @since Oct 2, 2007 10:43:31 PM
 * @version 1.0 创建时间:Oct 2, 2007 10:43:31 PM,初始版本
 */
public class QueryUtil {
	private static final Log log = LogFactory.getLog(QueryUtil.class);
	private CrmAreaDAO crmAreaDAO;
	private CrmEntIndustryDAO crmEntIndustryDAO;
	private CrmEntPropertyDAO crmEntPropertyDAO;
	private CrmBankDAO crmBankDAO;
	private CrmCuLevDAO crmCuLevDAO;
	private CrmCuStateDAO crmCuStateDAO;
	private CrmEntCreditDAO crmEntCreditDAO;
	private CrmCustomerDAO crmCustomerDAO;
	private PaginationDAO paginationDAO;	
	public CrmEntIndustryDAO getCrmEntIndustryDAO() {
		return crmEntIndustryDAO;
	}
	public void setCrmEntIndustryDAO(CrmEntIndustryDAO crmEntIndustryDAO) {
		this.crmEntIndustryDAO = crmEntIndustryDAO;
	}
	public CrmEntPropertyDAO getCrmEntPropertyDAO() {
		return crmEntPropertyDAO;
	}
	public void setCrmEntPropertyDAO(CrmEntPropertyDAO crmEntPropertyDAO) {
		this.crmEntPropertyDAO = crmEntPropertyDAO;
	}
	public CrmBankDAO getCrmBankDAO() {
		return crmBankDAO;
	}
	public void setCrmBankDAO(CrmBankDAO crmBankDAO) {
		this.crmBankDAO = crmBankDAO;
	}
	public CrmCuLevDAO getCrmCuLevDAO() {
		return crmCuLevDAO;
	}
	public void setCrmCuLevDAO(CrmCuLevDAO crmCuLevDAO) {
		this.crmCuLevDAO = crmCuLevDAO;
	}
	public CrmCuStateDAO getCrmCuStateDAO() {
		return crmCuStateDAO;
	}
	public void setCrmCuStateDAO(CrmCuStateDAO crmCuStateDAO) {
		this.crmCuStateDAO = crmCuStateDAO;
	}
	public CrmEntCreditDAO getCrmEntCreditDAO() {
		return crmEntCreditDAO;
	}
	public void setCrmEntCreditDAO(CrmEntCreditDAO crmEntCreditDAO) {
		this.crmEntCreditDAO = crmEntCreditDAO;
	}
	public CrmAreaDAO getCrmAreaDAO() {
		return crmAreaDAO;
	}
	public void setCrmAreaDAO(CrmAreaDAO crmAreaDAO) {
		this.crmAreaDAO = crmAreaDAO;
	}
	public CrmCustomerDAO getCrmCustomerDAO() {
		return crmCustomerDAO;
	}
	public void setCrmCustomerDAO(CrmCustomerDAO crmCustomerDAO) {
		this.crmCustomerDAO = crmCustomerDAO;
	}
	public PaginationDAO getPaginationDAO() {
		return paginationDAO;
	}
	public void setPaginationDAO(PaginationDAO paginationDAO) {
		this.paginationDAO = paginationDAO;
	}	
	/**
	 * 传入查询条件进行分页查询
	 * 当obj和strO都为null时,查询全部
	 * 
	 * @param obj 要匹配的模板对象
	 * @param strO 要匹配的字符串(仍为object)
	 * @param currPage 当前页
	 * @param pageSize 每页页数
	 * @return
	 */
	public PageinationVO query(String target,Object obj,Object strO,PageinationVO pageinationVO) {
		if(Constant.CRM_CUSTOMER.equals(target)) pageinationVO = queryCrmCustomer(obj,strO,pageinationVO);
		return pageinationVO;
	}
	
	/**
	 * 查询Customer表
	 * 
	 * @param obj
	 * @param StrO
	 * @return
	 */
	private PageinationVO queryCrmCustomer(Object obj,Object strO,PageinationVO pageinationVO) {
		//原始查询语句
		String baseSQL = "SELECT * FROM CRM_CUSTOMER ORDER BY CUSTOMER_ID";
		if(obj != null || strO != null) baseSQL = baseSQL + " WHERE ";		
		//如果有模板匹配条件
		if(obj != null) {
			CrmCustomer crmCustomer = (CrmCustomer)obj;
			String tmp = "";
			if(crmCustomer.getCrmArea()!= null) tmp +=" AREA_ID=" +  crmCustomer.getCrmArea().getAreaId() + " AND "; 
			if(crmCustomer.getCrmBank() != null) tmp +=" BANK_ID=" + crmCustomer.getCrmBank().getBankId() + " AND ";
			if(crmCustomer.getCrmCuLev() != null) tmp +=" CU_LEV_ID=" + crmCustomer.getCrmCuLev().getCuLevId() + " AND ";
			if(crmCustomer.getCrmCuState() != null) tmp +=" CU_STATE_ID=" + crmCustomer.getCrmCuState().getCuStateId() + " AND ";
			if(crmCustomer.getCrmEntCredit() != null) tmp +=" CREDIT_ID=" + crmCustomer.getCrmEntCredit().getCreditId() + " AND ";
			if(crmCustomer.getCrmEntIndustry() != null) tmp +=" INDUSTRY_ID=" + crmCustomer.getCrmEntIndustry().getIndustryId() + " AND ";
			if(crmCustomer.getCrmEntProperty() != null) tmp +=" PROPERTY_ID=" + crmCustomer.getCrmEntProperty().getPropertyId() + " AND ";			
			baseSQL = baseSQL + tmp;
			log.warn("[QueryUtil]---[queryCrmCustomer]---[有模板匹配条件]---[baseSQL=]---" + baseSQL);			
		}
		//如果有字符串匹配
		if(strO != null) {
			String tmp = " ENTERPRISE like " + strO ;
			baseSQL = baseSQL + tmp;
			log.warn("[QueryUtil]---[queryCrmCustomer]---[有字符串匹配]---[baseSQL=]---" + baseSQL);	
		}
		//去掉AND后缀
		/** 
		 * 如
		 * SELECT * FROM CRM_CUSTOMER ORDER BY CUSTOMER_ID WHERE  AREA_ID= AND 
		 * 01234567890123456789012345678901234567890123456789012345678901234567 
		 * 这样一个生成的sql语句
		 * 应去除AND后缀
		 * 总长68(包括最后一个空格)
		 * AND中的"A"位于第64(0开始)
		 * 应把后面4位扔掉
		 */
		if(baseSQL.lastIndexOf("AND") == baseSQL.length()-4) {
			baseSQL = baseSQL.substring(0,baseSQL.length()-5);
			log.warn("[QueryUtil]---[queryCrmCustomer]---[有多余的AND后缀]");
		} 
		
		log.warn("[QueryUtil]---[queryCrmCustomer]---[最终匹配的SQL语句]---[baseSQL=]---" + baseSQL);
		
		
		DBConnection dBConnection = new DBConnection();		
		Connection connection=null;
		ResultSet resultSet = null;
		try {
			connection = dBConnection.getConnection(dBConnection.ORACLE_LOCAL_ZD);
			paginationDAO.setNPageNo(pageinationVO.getNPageNo());
			paginationDAO.setNPageRows(pageinationVO.getNPageRows());
			
			PreparedStatement psSum = null;
			PreparedStatement psPage = null;			
			
			psSum = paginationDAO.makeSumPrepareStatement(connection, baseSQL);
			psPage = paginationDAO.makePagePrepareStatement(connection, baseSQL);
			
			int i = 1;
			paginationDAO.getSumNumberBySQL(psSum);
			// 总页数
			pageinationVO.setNPageSum(paginationDAO.getNPageSum());

			// 总记录数
			pageinationVO.setNTotal(paginationDAO.getNTotal());
			i = 1;
			
			resultSet = paginationDAO.executeQuery(psPage, i);
			while(resultSet.next()){
				CrmCustomerVO crmCustomerVO= new CrmCustomerVO();
				
				if(resultSet.getString("AREA_ID") != null) crmCustomerVO.setCrmArea(crmAreaDAO.findById(resultSet.getString("AREA_ID")).getCity());
				if(resultSet.getString("INDUSTRY_ID") != null)  crmCustomerVO.setCrmEntIndustry(crmEntIndustryDAO.findById(resultSet.getString("INDUSTRY_ID")).getIndustry());
				if(resultSet.getString("PROPERTY_ID") != null)  crmCustomerVO.setCrmEntProperty(crmEntPropertyDAO.findById(resultSet.getString("PROPERTY_ID")).getProperty());
				if(resultSet.getString("BANK_ID") != null)  crmCustomerVO.setCrmBank(crmBankDAO.findById(resultSet.getString("BANK_ID")).getBank());
				if(resultSet.getString("CU_LEV_ID") != null)  crmCustomerVO.setCrmCuLev(crmCuLevDAO.findById(resultSet.getString("CU_LEV_ID")).getCuLev());
				if(resultSet.getString("CU_STATE_ID") != null) crmCustomerVO.setCrmCuState(crmCuStateDAO.findById(resultSet.getString("CU_STATE_ID")).getCuState());
				if(resultSet.getString("CREDIT_ID") != null)  crmCustomerVO.setCrmEntCredit(crmEntCreditDAO.findById(resultSet.getString("CREDIT_ID")).getCredit());
	
				if(resultSet.getString("ACCOUNT") != null)  crmCustomerVO.setAccount(resultSet.getString("ACCOUNT"));
				if(resultSet.getString("ADDR") != null)  crmCustomerVO.setAddr(resultSet.getString("ADDR"));				
				if(resultSet.getString("CUSTOMER_ID") != null)  crmCustomerVO.setCustomerId(resultSet.getString("CUSTOMER_ID"));
				if(resultSet.getString("ENTERPRISE") != null)  crmCustomerVO.setEnterprise(resultSet.getString("ENTERPRISE"));
				if(resultSet.getString("SITE") != null)  crmCustomerVO.setSite(resultSet.getString("SITE"));
				if(resultSet.getString("TEL") != null)  crmCustomerVO.setTel(resultSet.getString("TEL"));
				if(resultSet.getString("TAX") != null)  crmCustomerVO.setTax(resultSet.getString("TAX"));
				if(resultSet.getString("EMAIL") != null)  crmCustomerVO.setEmail(resultSet.getString("EMAIL"));
				if(resultSet.getString("FAX") != null)  crmCustomerVO.setFax(resultSet.getString("FAX"));
				if(resultSet.getString("LEGAL_REPR") != null)  crmCustomerVO.setLegalRepr(resultSet.getString("LEGAL_REPR"));
				if(resultSet.getString("DESCRIPTION") != null)  crmCustomerVO.setDescription(resultSet.getString("DESCRIPTION"));
				pageinationVO.getLs().add(crmCustomerVO);
			}
			
		} catch (Exception ex) {
			ex.printStackTrace();
		}finally{
			dBConnection.closeConnection(connection);
		}
		
		
		
		return pageinationVO;
	}	
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?