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框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供大家参考学习。也欢迎提出意见共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
SSH整合 全注解零配置 (118个子文件)
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
AhCustomException.class 2KB
Role.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 529B
org.eclipse.wst.common.component 450B
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
共 118 条
- 1
- 2
资源评论
- wangjianzhanghong2014-07-30是我想要的,值得起8分
- sy1231231232016-08-10很实用的案例,可以正常运行。可以用来学习基础框架搭建
- qq_238876632015-09-08非常好的案例,挺好的值这个分值
- kengdy2014-11-10很久之前使用的,几年后生疏了,需要学习一下
刘老高
- 粉丝: 16
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功