📄 querymanager.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 + -