/**
* 项目名称:HR
* 类名称:Dictionary.java
* 包名称:com.aq.osgi.crm.base
*
* 创建日期:2011-1-4
* 创建人:heruizhe
*/
package com.aq.osgi.mdm.dao;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.type.NullableType;
import org.hibernate.type.Type;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.aq.osgi.mdm.beans.AQInfo;
import com.aq.osgi.mdm.exception.CurrentlyException;
import com.aq.osgi.mdm.exception.ErrorCodeConstant;
import com.aq.osgi.mdm.util.ApplicationConstant;
/**
* 创建人: 何睿哲
* 类说明: DAO层基类,提供protected方法供各自的业务DAO调用,统一管理持久层方法
* @author heruizhe
*/
public abstract class BaseDAO extends HibernateDaoSupport
{
/** 日志记录 */
private static Logger log = Logger.getLogger(BaseDAO.class);
/**
*
* 方法描述:spring3.x sessionFactory注入
* 创建人:heruizhe
* 创建日期:2011-1-18
* @param sessionFactory spring配置xml文件中声明的sessionFactory
*/
@Resource(name = "sessionFactory")
public void getHibernateSession(SessionFactory sessionFactory)
{
setSessionFactory(sessionFactory);
}
/**
* 条件查询(where...and...子句),无最大条数限制版本<br>
* @see com.aq.osgi.crm.base.BaseDAO.lookup(Object[] values, Type[] types, String query, int maxResults)
*/
protected List lookup(Object[] values, Type[] types, String query)
throws CurrentlyException
{
return lookup(values, types, query, -1);
}
/**
*
* 方法描述:条件查询(where...and...子句)<br>
* 创建人:heruizhe<br>
* 创建日期:2011-1-18
* @param values 查询条件的值集合
* @param types 查询条件的值的类型集合
* @param query 标准HQL语句
* @param maxResults 查询最大条数
* @return 返回查询结果集
* @throws CurrentlyException 若查询结果为空则抛出ERROR_1100异常;若抓取到HibernateException则转为CurrentlyException(ErrorCodeConstant.ERROR_1001)抛出
*/
protected List lookup(Object[] values, Type[] types, String query, int maxResults)
throws CurrentlyException
{
List results = null;
try
{
Session session = this.getSession();
Query q = session.createQuery(query);
// 若有参数则添加
if (values != null && types != null)
{
q.setParameters(values, types);
}
// 若查询最大条数有效则设置查询最大条数
if (maxResults >= 0)
{
q.setMaxResults(maxResults);
}
// 执行查询
results = q.list();
//释放会话
releaseSession(session);
// 若查询结果集为空则记录warn日志并抛出ERROR_1100异常(未查询到数据)
// if (results == null || results.size() < 1)
// {
// // modify start
// // by qixin
// // in 2011-1-18
// // 修改异常处理,统一改为抛出CurrentlyException
// log.warn(ErrorCodeConstant.ERROR_1100 + " 查询结果为空!");
// throw new CurrentlyException(ErrorCodeConstant.ERROR_1100, "查询结果为空");
// // modify end
// }
}
catch (HibernateException he)
{
// 记录错误日志,抛出已定义异常
log.error("HibernateException", he);
throw new CurrentlyException(ErrorCodeConstant.ERROR_1001, "数据库异常!");
}
return results;
}
/**
* 集合条件查询(in子句),无最大条数限制版本
* @see com.aq.osgi.crm.base.BaseDAO.lookup(String query, String parameterName, Collection values, NullableType type, int maxResults)
*/
protected List lookup(String query, String parameterName, Collection values, NullableType type)
throws CurrentlyException
{
return lookup(query, parameterName, values, type, -1);
}
/**
* 方法描述:集合条件查询(in子句)
* 创建人:heruizhe<br>
* 创建日期:2011-1-18<br>
* @param query HQL语句
* @param parameterName 参数名
* @param values 条件值集合
* @param type 是否允许为null
* @param maxResults 最大记录数
* @return 查询结果集
* @throws CurrentlyException 若查询结果为空则抛出ERROR_1100异常;若抓取到HibernateException则转为CurrentlyException(ErrorCodeConstant.ERROR_1001)抛出
*/
protected List lookup(String query, String parameterName, Collection values, NullableType type, int maxResults)
throws CurrentlyException
{
List results = null;
try
{
Session session = this.getSession();
Query q = session.createQuery(query);
q.setParameterList(parameterName, values, type);
if (maxResults >= 0)
{
q.setMaxResults(maxResults);
}
// 执行查询
results = q.list();
//释放会话
releaseSession(session);
// 若查询结果集为空则记录warn日志并抛出ERROR_1100异常(未查询到数据)
if (results == null || results.size() < 1)
{
// modify start
// by qixin
// in 2011-1-18
// 修改异常处理,统一改为抛出CurrentlyException
log.warn(ErrorCodeConstant.ERROR_1100 + " 查询结果为空!");
throw new CurrentlyException(ErrorCodeConstant.ERROR_1100, "查询结果为空");
// modify end}
}
}
catch (HibernateException he)
{
// 记录错误日志,抛出已定义异常
log.error("HibernateException", he);
throw new CurrentlyException(ErrorCodeConstant.ERROR_1001, "数据库异常!");
}
return results;
}
/**
*
* 方法描述:查询指定序列的nextVal
* 创建人:luowenyu
* 创建日期:2011-1-18
* @param seqName oracle序列名
* @return 返回序列的nextVal
*/
protected String getSequence(String seqName)
{
Dialect da = ((SessionFactoryImplementor)getSessionFactory()).getDialect();
Query q = this.getSession().createSQLQuery(da.getSequenceNextValString(seqName));
return q.list().get(0).toString();
}
/**
*
* 方法描述:bean对象单体查询
* 创建人:heruizhe
* 创建日期:2011-1-18
* @param clazz bean类型
* @param id bean对象
* @return 返回查询到的bean对象
* @throws CurrentlyException
* 入口参数为null——异常码ERROR_1001
* 未查询到结果——异常码ERROR_1100
* 数据库异常——异常码ERROR_1001
* runtime异常——异常吗ERROR_1000
*/
protected Object load(Class<?> clazz, Serializable id)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
spring3.0 项目源码 (419个子文件)
BaseDAO.class 26KB
MenuModuleInfoDAO.class 21KB
SystemDAO.class 18KB
ThemeDAO.class 18KB
InterFaceDAO.class 18KB
SystemControllerImpl.class 17KB
ThemeControllerImpl.class 17KB
InterfaceControlerImpl.class 16KB
InterFaceBean.class 16KB
ThemeBean.class 16KB
SystemBean.class 15KB
SystemUserDao.class 15KB
ThemeServiceImpl.class 14KB
SystemUser.class 14KB
SystemServiceImpl.class 13KB
InterfaceServiceImpl.class 12KB
MenuModuleInfoControllerImpl.class 12KB
Role.class 11KB
PropertieBean.class 11KB
MenuModuleInfoBean.class 10KB
InterfaceBeanHistory.class 10KB
ThemeBeanHistory.class 10KB
UserControllerImpl.class 9KB
AQInfo.class 8KB
AQHibernateCallback.class 8KB
Initializer.class 8KB
ErrorCodeConstant.class 8KB
MenuModuleInfoServiceImpl.class 7KB
Permission.class 7KB
ThemeHistoryDAO.class 6KB
ThemeHistoryServiceImpl.class 6KB
UserServiceImpl.class 5KB
FileUtils.class 4KB
PermissionUtils.class 4KB
PropertiesControllerImpl.class 4KB
ApplicationConstant.class 4KB
FileVO.class 4KB
PropertieDAO.class 3KB
PropertiesServiceImpl.class 3KB
CastorUtils.class 3KB
MenuSort.class 2KB
MenuInfoUtils.class 2KB
MenuCastor.class 2KB
WebContextFilter.class 2KB
MemberSessionData.class 2KB
SystemThread.class 2KB
ISystemController.class 2KB
IThemeController.class 2KB
CalendarUtils.class 1KB
InterfaceController.class 1KB
IUserController.class 1KB
CurrentlyException.class 1KB
IUserService.class 1KB
InterfaceService.class 1KB
IThemeService.class 1KB
ISystemService.class 1KB
IMenuModuleInfoController.class 1KB
MdmMessage.class 769B
IPropertiesController.class 734B
IMenuModuleInfoService.class 705B
IPropertieService.class 640B
IThemeHistoryService.class 574B
ApplicationUtils.class 515B
.classpath 487B
about.css 4KB
sideMenu.css 3KB
css.css 1KB
entries 2KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 1KB
entries 955B
entries 744B
entries 727B
entries 725B
entries 725B
entries 705B
entries 698B
entries 679B
entries 582B
entries 582B
entries 570B
entries 570B
entries 561B
entries 561B
entries 556B
entries 556B
entries 556B
entries 556B
entries 543B
entries 531B
共 419 条
- 1
- 2
- 3
- 4
- 5
资源评论
- woshigedadaozei2013-03-20亏死了,花了10分,得到了一个乱七八糟的项目。导入myeclipse后好多地方报错,跑不起来!
- shaode20122012-07-06要是有个清单,说明哪些包就好了,还有导入方法~~
哈哈哈3234
- 粉丝: 23
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功