package com.sshFrame.zero.dao;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import javax.persistence.Id;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 基于hibernate的BaseDao
* Spring3对Hibernate4已经没有了HibernateDaoSupport和HibernateTemplate的支持,使用了原生态的API
* @author 雪精灵
*
* @param <T>
*/
public class BaseDao<T extends Serializable> {
@Autowired
private SessionFactory sessionFactory;
//当前泛型类
@SuppressWarnings("rawtypes")
private Class entityClass;
//当前主键名称
private String pkname;
private final String HQL_LIST_ALL;
private final String HQL_COUNT_ALL;
@SuppressWarnings("rawtypes")
public Class getEntityClass() {
return entityClass;
}
@SuppressWarnings("rawtypes")
public void setEntityClass(Class entityClass) {
this.entityClass = entityClass;
}
@SuppressWarnings("rawtypes")
public BaseDao() {
//获取当前泛型类
Type type = this.getClass().getGenericSuperclass();
if (type.toString().indexOf("BaseDao") != -1) {
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setEntityClass((Class) types[0]);
}else{
type = ((Class)type).getGenericSuperclass();
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setEntityClass((Class) types[0]);
}
getPkname();
HQL_LIST_ALL="from "+this.entityClass.getSimpleName()+" order by "+pkname+" desc";
HQL_COUNT_ALL="select count(*) from "+this.entityClass.getSimpleName();
}
/**
* 获取主键名称
* @return
*/
public String getPkname() {
Field[] fields = this.entityClass.getDeclaredFields();//反射类字段
for (Field field : fields) {
field.isAnnotationPresent(Id.class);
this.pkname=field.getName();
break;
}
return pkname;
}
/**
* 保存实例
*
* @param t
* @throws HibernateException
*/
public void save(T t) throws HibernateException{
Session session=null;
try {
session=sessionFactory.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
throw new HibernateException(e);
}finally{
session.close();
}
}
/**
* 修改实例
*
* @param t
* @throws HibernateException
*/
public void update(T t) throws HibernateException{
Session session=null;
try {
session=sessionFactory.openSession();
session.beginTransaction();
session.update(t);
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
throw new HibernateException(e);
}finally{
session.close();
}
}
/**
* 删除实例
*
* @param t
* @throws HibernateException
*/
public void delete(T t) throws HibernateException{
Session session=null;
try {
session=sessionFactory.openSession();
session.beginTransaction();
session.delete(t);
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
throw new HibernateException(e);
}finally{
session.close();
}
}
/**
* 获取实例
*
* @param id
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
public T get(Serializable id) throws Exception{
Session session=null;
T t=null;
try {
session=sessionFactory.openSession();
session.beginTransaction();
t=(T) session.get(getEntityClass(), id);
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
throw new HibernateException(e);
}finally{
session.close();
}
return t;
}
/**
* 查询全部
*
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
public List<T> findAll() throws Exception {
List<T> list=null;
Session session=null;
try {
session = sessionFactory.openSession();
session.beginTransaction();
Query query = session.createQuery(HQL_LIST_ALL);
list = query.list();
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
}finally{
session.close();
}
return list;
}
/**
* 查询总数
*
* @throws HibernateException
*/
public Integer findAllCount() throws Exception {
Session session=null;
Integer count=0;
try {
session = sessionFactory.openSession();
session.beginTransaction();
Query query = session.createQuery(HQL_COUNT_ALL);
List<?> list = query.list();
session.getTransaction().commit();
if(list!=null&&!list.isEmpty()){
count=((Integer) list.get(0)).intValue();
}
} catch (HibernateException e) {
e.printStackTrace();
}finally{
session.close();
}
return count;
}
/**
* QBC查询
*
* @param criteria
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
public List<T> findByCriteria(Criteria criteria) throws Exception {
List<T> list=null;
Session session=null;
try {
session = sessionFactory.openSession();
session.beginTransaction();
Criteria criteria1 = session.createCriteria(getEntityClass());
criteria1=criteria;
list = criteria1.list();
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
}finally{
session.close();
}
return list;
}
/**
* QBE查询
*
* @param t
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
public List<T> findByExample(T t) throws Exception {
List<T> list=null;
Session session=null;
Example example = Example.create(t);
try {
session = sessionFactory.openSession();
session.beginTransaction();
Criteria criteria = session.createCriteria(getEntityClass());
criteria.add(example);
list = criteria.list();
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
}finally{
session.close();
}
return list;
}
/**
* HQL查询
*
* @param hql
* @param objects
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
public List<Object[]> findByHql(String hql,final Object...objects) throws Exception{
List<Object[]> list=null;
Session session=null;
try {
session=sessionFactory.openSession();
session.beginTransaction();
Query query = session.createQuery(hql);
for (int i = 0; i < objects.length; i++) {
query.setParameter(i, objects[i]);
}
list = query.list();
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return list;
}
/**
* SQL查询
*
* @param hql
* @param objects
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
public List<Object[]> findBySql(String sql,final Object...objects){
List<Object[]> list=null;
Session session=null;
try {
session=sessionFactory.openSession();
session.beginTransaction();
Query query = sessionFactory.getCurrentSession().createSQLQuery(sql);
for (int i = 0; i < objects.length; i++) {
query.setParameter(i, objects[i]);
}
list = query.list();
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return list;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
ssh(struts2.3.8+spring3.2+heibernate4.1+annotation零配置
共119个文件
jar:46个
class:27个
java:26个
5星 · 超过95%的资源 需积分: 9 692 下载量 15 浏览量
2013-01-16
16:15:05
上传
评论 11
收藏 17.33MB RAR 举报
温馨提示
实现了简单用户权限登录,项目中含有mysql数据库 加入了基本的拦截器,错误类处理等 加入了BaseDao,Spring3对Hibernate4已经没有了HibernateDaoSupport和HibernateTemplate的支持,使用了原生态的API
资源推荐
资源详情
资源评论
收起资源包目录
ssh(struts2.3.8+spring3.2+heibernate4.1+annotation零配置 (119个子文件)
BaseDao.class 8KB
Page.class 3KB
UserinfoAction.class 3KB
ExceptionInterceptor.class 3KB
AuthorityInterceptor.class 3KB
SessionCheckFilter.class 3KB
UserinfoService.class 3KB
Userinfo.class 3KB
AdminAction.class 2KB
Role.class 2KB
AhCustomException.class 2KB
PageUtil.class 2KB
Resources.class 2KB
BaseService.class 2KB
Rights.class 2KB
Rightsresources.class 2KB
Userrole.class 2KB
Rolerights.class 2KB
AhCustomException$ExcCode.class 1KB
SystemListener.class 1KB
RightsresourcesDao.class 613B
RolerightsDao.class 588B
ResourcesDao.class 583B
UserroleDao.class 578B
RightsDao.class 568B
RoleDao.class 558B
UserinfoDao.class 502B
.classpath 841B
org.eclipse.wst.common.component 463B
org.eclipse.wst.jsdt.ui.superType.container 49B
hibernate-core-4.1.9.Final.jar 4.3MB
aspectjweaver-1.5.3.jar 1.8MB
ehcache-core-2.4.3.jar 983KB
freemarker-2.3.19.jar 909KB
spring-core-3.2.0.RELEASE.jar 843KB
spring-context-3.2.0.RELEASE.jar 834KB
struts2-core-2.3.8.jar 775KB
mysql-connector-java-5.1.18-bin.jar 771KB
javassist-3.17.1-GA.jar 695KB
spring-web-3.2.0.RELEASE.jar 610KB
xwork-core-2.3.8.jar 604KB
c3p0-0.9.1.jar 594KB
spring-beans-3.2.0.RELEASE.jar 591KB
log4j-1.2.16.jar 470KB
spring-test-3.2.0.RELEASE.jar 441KB
antlr-2.7.7.jar 435KB
spring-jdbc-3.2.0.RELEASE.jar 392KB
spring-orm-3.2.0.RELEASE.jar 383KB
spring-aop-3.2.0.RELEASE.jar 327KB
commons-lang3-3.1.jar 308KB
dom4j-1.6.1.jar 307KB
cglib-2.2.jar 272KB
spring-tx-3.2.0.RELEASE.jar 235KB
ognl-3.0.6.jar 223KB
spring-jms-3.2.0.RELEASE.jar 196KB
spring-expression-3.2.0.RELEASE.jar 189KB
commons-io-2.0.1.jar 156KB
hibernate-ehcache-4.1.9.Final.jar 134KB
commons-dbcp.jar 119KB
hibernate-jpa-2.0-api-1.0.1.Final.jar 100KB
hibernate-commons-annotations-4.0.1.Final.jar 79KB
spring-oxm-3.2.0.RELEASE.jar 71KB
spring-aspects-3.2.0.RELEASE.jar 68KB
struts2-convention-plugin-2.3.8.jar 65KB
commons-pool-1.3.jar 61KB
jboss-logging-3.1.0.GA.jar 59KB
commons-logging-1.1.1.jar 59KB
commons-fileupload-1.2.2.jar 58KB
asm-3.3.jar 43KB
asm-commons-3.3.jar 37KB
slf4j-api-1.6.4.jar 25KB
struts2-spring-plugin-2.3.8.jar 21KB
jboss-transaction-api_1.1_spec-1.0.0.Final.jar 11KB
slf4j-log4j12-1.6.4.jar 10KB
spring-instrument-3.2.0.RELEASE.jar 7KB
aopalliance-1.0.jar 4KB
BaseDao.java 8KB
Page.java 3KB
UserinfoAction.java 2KB
PageUtil.java 2KB
AhCustomException.java 2KB
ExceptionInterceptor.java 2KB
Userinfo.java 2KB
SessionCheckFilter.java 2KB
AuthorityInterceptor.java 2KB
AdminAction.java 2KB
UserinfoService.java 2KB
Role.java 2KB
Resources.java 2KB
Rights.java 1KB
Rightsresources.java 1KB
Userrole.java 1KB
Rolerights.java 1KB
BaseService.java 874B
SystemListener.java 536B
RightsresourcesDao.java 349B
RolerightsDao.java 329B
ResourcesDao.java 325B
UserroleDao.java 323B
RightsDao.java 315B
共 119 条
- 1
- 2
doublelucklysnow
- 粉丝: 16
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页