⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 querymanager.java

📁 一种快速开发的Java Web架构,doc里有详细的设计文档和开发文档。
💻 JAVA
字号:
/**
 *
 * 功能	 Coarse Function Description
 * 类名  QueryManager
 *
 * ver       变更日        部门        变更者   变更内容
 * ──────────────────────────────────
 * V1.0    2006-10-8     国内事业部     陈志武     初版
 * V1.1    2006-10-8     国内事业部     陈志武     改定
 *
 */

package com.hisoft.cottonbusiness.core.persistence;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections.map.ListOrderedMap;
import org.apache.log4j.Logger;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.hisoft.cottonbusiness.core.common.MapWrapper;
import com.hisoft.cottonbusiness.core.util.StringUtils;



/**
 * 该类负责所有sql查询操作,将jdbc进行封装,方便处理
 * 
 * @author chen_zhiwu
 *
 */
public class QueryManager extends JdbcDaoSupport
{

	private static final Logger log = Logger.getLogger(QueryManager.class);

	/**
	 * 根据sql语句查询
	 * 
	 * @param sql
	 * @return
	 */
	public List find(String sql)
	{
		log.debug("现在调用find,sql: " + sql);
		Object[] params = null;
		List list = getJdbcTemplate().queryForList(sql,params);

		return list;
	}
	
	/**
	 * 根据sql执行查询,结构为Map构成的List
	 * 
	 * @param sql
	 * @param wrapped 是否将Map进行包装,方便JSTL展示,譬如可以处理Map的size
	 * @return
	 */
	public List find(String sql,boolean wrapped)
	{
		List list = find(sql);
		
		if (wrapped)
		{
			return wrapMapInList(list);
		}
		else
		{
			return list;
		}
	}
	
	
	/**
	 * 根据sql查询单条记录。
	 * 
	 * @param sql
	 * @return
	 */
	public Map queryForMap(String sql)
	{
		Map map = new ListOrderedMap();
		
		try
		{
			Object[] params = null;
			map = getJdbcTemplate().queryForMap(sql,params);
		}
		catch (IncorrectResultSizeDataAccessException e)
		{
			// 
		}
		
		return map;
	}
	
	/**
	 * 根据sql语句和sql查询参数,执行查询,必须保证查询结果只有一条,
	 * 如根据用户id取用户信息。
	 * 
	 * @param sql
	 * @param params
	 * @return
	 */
	public Map queryForMap(String sql,Object[] params)
	{
		Map map = new ListOrderedMap();
		map = getJdbcTemplate().queryForMap(sql,params);
		
		return map;
	}
	
	/**
	 * 根据sql语句和sql查询参数,执行查询,必须保证查询结果只有一条,
	 * 如根据用户id取用户信息。
	 * 
	 * @param sql
	 * @param param
	 * @return
	 */
	public Map queryForMap(String sql,Object param)
	{
		Object[] p = {param};
		
		Map map = new HashMap();
		try
		{
			map = queryForMap(sql,p);
		}
		catch (RuntimeException e)
		{
			//
		}
		
		return map;
	}
	
	public Object queryForObject(String sql,Class cls)
	{
		Object object = getJdbcTemplate().queryForObject(sql,cls);
		
		return object;
	}
	
	public Object queryForObject(String sql,RowMapper mapper)
	{
		Object object = getJdbcTemplate().queryForObject(sql,mapper);
		
		return object;
	}

	/**
	 * 根据多条sql,查询
	 * @param sql
	 * @return
	 */
	public List find(String[] sql)
	{
		if (sql == null)
		{
			return null;
		}

		List list = null;

		for (int i = 0; i < sql.length; i++)
		{
			log.debug("现在调用find,sql: " + sql[i]);
			List sub = getJdbcTemplate().queryForList(sql[i]);
			if (list == null)
			{
				list = sub;
			}
			else
			{
				list.addAll(sub);
			}
		}

		return wrapMapInList(list);
	}

	/**
	 * 根据sql和sql参数查询
	 * 
	 * @param sql
	 * @param params
	 * @return
	 */
	public List find(String sql,Object[] params)
	{
		log.debug("传入的sql:" + sql);
		if (null == sql)
		{
			return wrapMapInList(new ArrayList());
		}
		List list = getJdbcTemplate().queryForList(sql,filterParams(sql,params));
		
		return wrapMapInList(list);
	}
	
	/**
	 * 根据sql和sql参数查询,并且要求是否List结果集方便JSTL显示
	 * 
	 * @param sql
	 * @param params
	 * @param wrapped
	 * @return
	 */
	public List find(String sql,Object[] params,boolean wrapped)
	{
		log.debug("传入的sql:" + sql);
		List list = new ArrayList();
		
		if (wrapped)
		{
			if (null == sql)
			{
				return wrapMapInList(list);
			}
			list = getJdbcTemplate().queryForList(sql,filterParams(sql,params));
			list = wrapMapInList(list);
		}
		else
		{
			list = getJdbcTemplate().queryForList(sql,filterParams(sql,params));
		}
		return list;
	}
	

	/**
	 * 执行一组相似的sql语句
	 * 
	 * @param sql
	 * @param params
	 * @return
	 */
	public List find(String[] sql,Object[] params)
	{
		List list = null;
		for(int i = 0; i < sql.length; i++)
		{
			List sub = find(sql[i],params);
			
			if (null == list)
			{
				list = sub;
			}
			else
			{
				list.addAll(sub);
			}
		}
		
		return list;
	}
	
	
	/**
	 * 根据sql和sql参数查询结果集,并且在每一行加上一个新字段,如序号
	 * 
	 * @param sql
	 * @param params
	 * @param label
	 * @param firstRow
	 * @return
	 */
	public List find(String sql,Object[] params,String label,int firstRow)
	{
		log.debug("代查询的sql语句:" + sql);
		
		List list = getJdbcTemplate().queryForList(sql,filterParams(sql,params));
		List newList = new ArrayList(20);
		
		Iterator iter = list.iterator();
		while (iter.hasNext())
		{
			Map map = (Map) iter.next();
			Map newMap = new ListOrderedMap();
			newMap.put(label,new Integer(firstRow++));
			newMap.putAll(map);
			
			newList.add(new MapWrapper(newMap));
		}
		
		
		return newList;
	}
	
	/**
	 * 根据一组相似的sql和sql参数查询结果集,并且在每一行加上一个新字段,如序号
	 * 
	 * @param sql
	 * @param params
	 * @param label
	 * @param firstRow
	 * @return
	 */
	public List find(String[] sql,Object[] params,String label,int firstRow)
	{
		List list = null;
		for(int i = 0; i < sql.length; i++)
		{
			List sub = find(sql[i],params,label,firstRow);
			
			if (null == list)
			{
				list = sub;
			}
			else
			{
				list.addAll(sub);
			}
		}
		
		return list;
	}
	
	private List wrapMapInList(List list)
	{
		List newList = new ArrayList();
		Iterator iter = list.iterator();
		
		while(iter.hasNext())
		{
			Map map =(Map)iter.next();
			newList.add(new MapWrapper(map));
		}
		
		return newList;
	}
	
	/**
	 * 根据sql和sql参数,查询记录条数,方便分页处理
	 * 
	 * @param sql
	 * @param params
	 * @return
	 */
	public int findCount(String sql,Object[] params)
	{
		log.debug("传入的sql:" + sql);
		int count = getJdbcTemplate().queryForInt(sql,params);
		
		return count;
	}
	
	/**
	 * 根据sql和一个sql参数,查询记录条数,方便分页处理
	 * 
	 * @param sql
	 * @param param
	 * @return
	 */
	public int findCount(String sql,Object param)
	{
		Object[] p = {param};
		
		return findCount(sql,p);
	}
	
	/**
	 * 根据sql查询记录条数,方便分页处理
	 * @param sql
	 * @return
	 */
	public int findCount(String sql)
	{
		log.debug("传入的sql:" + sql);
		int count = getJdbcTemplate().queryForInt(sql);
		
		return count;
	}
	

	public List call(String procedure)
	{
		// getJdbcTemplate().execute("BIDATA.P_GET_BIDATA",null);

		return null;
	}
	
	/**
	 * return only required parameters
	 *  
	 * @param sql
	 * @param params
	 * @return
	 */
	private static Object[] filterParams(String sql,Object[] params)
	{
		int count = StringUtils.getCount(sql,"?");
		
		Object[] result = new Object[count];
		for(int i = 0; i < count; i++)
		{
			result[i] = params[i];
		}
		
		return result;
	}
	
	
	public static void main(String[] args)
	{
////		String sql = "in ?,?,sdf,?";
//		String sql = SqlMap.getProperty("REGIONCOTTONPRICE3");
//		Object[] params = {"aaa","bbb","ccc","ddd","eee","fff"};
//		
//		Object[] result = filterParams(sql,params);
//		
//		log.debug(result);
		

	}
	
}

⌨️ 快捷键说明

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