package cn.edu.cqut.bf.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import cn.edu.cqut.bf.dao.IBaseDao;
import cn.edu.cqut.bf.page.ObjectQuery;
import cn.edu.cqut.bf.page.Pager;
@SuppressWarnings({ "rawtypes", "unchecked" })
public abstract class BaseDaoImpl<T> extends HibernateDaoSupport implements
IBaseDao<T> {
private Class<T> entityClass;
public BaseDaoImpl() {
Class clazz = getClass();
Type type = clazz.getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType) type;
entityClass = (Class<T>) pType.getActualTypeArguments()[0];
}
}
@Override
public List<T> getAll() {
return getHibernateTemplate().loadAll(entityClass);
}
@Override
public T get(Serializable id) {
return getHibernateTemplate().get(entityClass, id);
}
@Override
public void save(T t) {
getHibernateTemplate().save(t);
}
@Override
public void update(T t) {
getHibernateTemplate().update(t);
}
@Override
public void delete(Serializable id) {
// 容易出错的地方
// getHibernateTemplate().delete(id);
T t = get(id);
if (t == null) {
throw new RuntimeException("找不到对应id=" + id + "的对象");
}
getHibernateTemplate().delete(t);
}
@Override
public List findByHql(String hql, Object... objects) {
return getHibernateTemplate().find(hql, objects);
}
@Override
public int getCount(final ObjectQuery query) {
query.getWhere();
return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
@Override
public Integer doInHibernate(Session session)
throws HibernateException {
final String hql = query.getHql();
Query q = session.createQuery("SELECT COUNT(o) FROM "
+ entityClass.getName() + " o where 1=1 " + hql);
List params = query.getParams();
if (query != null && params.size() > 0) {
int index = 0;
for (int i = 0; i < params.size(); i++) {
if (params.get(i) != null) {
q.setParameter(index++, params.get(i));
}
}
}
return ((Long) q.uniqueResult()).intValue();
}
});
}
@Override
public Pager<T> findPager(final ObjectQuery query) {
query.getWhere();
final Pager<T> pager = new Pager<T>(query.getPageNo(),
query.getPageSize(), getCount(query));
List<T> rows = getHibernateTemplate().execute(
new HibernateCallback<List<T>>() {
@Override
public List<T> doInHibernate(Session session)
throws HibernateException {
Query q = session.createQuery("SELECT o FROM "
+ entityClass.getName() + " o where 1=1 "
+ query.getHql() + " " + query.getOrder());
if (query.getParams().size() > 0) {
int index = 0;
for (int i = 0; i < query.getParams().size(); i++) {
if (query.getParams().get(i) != null) {
q.setParameter(index++, query.getParams()
.get(i));
}
}
}
// 从什么位置开始取数据
q.setFirstResult((pager.getPageNo() - 1)
* pager.getPageSize());
// 取多少条记录数
q.setMaxResults(pager.getPageSize());
return q.list();
}
});
pager.setRows(rows);
return pager;
}
@Override
public Pager<T> findPagerByHql(final int pageNo, final int pageSize,
final String hql, final Object... objects) {
// 编程式事务管理
int count = getHibernateTemplate().execute(
new HibernateCallback<Integer>() {
@Override
public Integer doInHibernate(Session session)
throws HibernateException {
Query q = session.createQuery(hql);
if (objects != null && objects.length > 0) {
int index = 0;
for (int i = 0; i < objects.length; i++) {
if (objects[i] != null) {
q.setParameter(index++, objects[i]);
}
}
}
return q.list().size();
}
});
final Pager<T> pager = new Pager<T>(pageNo, pageSize, count);
List<T> rows = getHibernateTemplate().execute(
new HibernateCallback<List<T>>() {
@Override
public List<T> doInHibernate(Session session)
throws HibernateException {
Query q = session.createQuery(hql);
if (objects != null && objects.length > 0) {
int index = 0;
for (int i = 0; i < objects.length; i++) {
if (objects[i] != null) {
q.setParameter(index++, objects[i]);
}
}
}
// 从什么位置开始取数据
q.setFirstResult((pager.getPageNo() - 1)
* pager.getPageSize());
// 取多少条记录数
q.setMaxResults(pager.getPageSize());
return q.list();
}
});
pager.setRows(rows);
return pager;
}
@Override
public List findByWhere(String hql, Object... objects) {
return getHibernateTemplate().find(hql, objects);
}
public List findBySql(final String sql, final Object... objects) {
return getHibernateTemplate().execute(new HibernateCallback() {
public List doInHibernate(Session session)
throws HibernateException {
SQLQuery query = session.createSQLQuery(sql);
for (int i = 0; i < objects.length; i++) {
query.setParameter(i, objects[i]);
}
return query.list();
}
});
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
最新版struts-2.3.20+hibernate-4.3.8+spring-4.1.4集成
共80个文件
jar:48个
class:11个
xml:9个
5星 · 超过95%的资源 需积分: 10 130 下载量 60 浏览量
2015-01-23
17:47:00
上传
评论 1
收藏 19.36MB RAR 举报
温馨提示
最新版struts-2.3.20+hibernate-4.3.8+spring-4.1.4集成,运行时需要修改db.properties里面的用户名和密码以及数据库名称
资源推荐
资源详情
资源评论
收起资源包目录
struts-2.3.20+hibernate-4.3.8+spring-4.1.4.rar (80个子文件)
BF
webapp
WEB-INF
web.xml 2KB
classes
cn
edu
cqut
bf
dao
IBaseDao.class 1KB
impl
BaseDaoImpl$2.class 3KB
BaseDaoImpl$1.class 2KB
BaseDaoImpl$5.class 2KB
BaseDaoImpl.class 5KB
BaseDaoImpl$4.class 2KB
BaseDaoImpl$3.class 2KB
action
domain
page
Pager.class 5KB
ObjectQuery.class 3KB
service
IBaseService.class 674B
impl
BaseServiceImpl.class 2KB
util
struts.xml 3KB
db.properties 160B
ehcache.xml 4KB
hibernate.cfg.xml 1011B
applicationContext.xml 4KB
lib
hibernate-jpa-2.1-api-1.0.0.Final.jar 111KB
commons-collections-3.1.jar 546KB
asm-5.0.2.jar 52KB
ezmorph-1.0.6.jar 84KB
asm-commons-5.0.2.jar 41KB
spring-core-4.1.4.RELEASE.jar 983KB
dom4j-1.6.1.jar 307KB
spring-context-4.1.4.RELEASE.jar 1002KB
hibernate-core-4.3.8.Final.jar 5.03MB
spring-jdbc-4.1.4.RELEASE.jar 417KB
aopalliance-1.0.jar 4KB
antlr-2.7.7.jar 435KB
struts2-core-2.3.20.jar 807KB
mchange-commons-java-0.2.3.4.jar 568KB
spring-beans-4.1.4.RELEASE.jar 692KB
spring-aspects-4.1.4.RELEASE.jar 56KB
spring-expression-4.1.4.RELEASE.jar 253KB
freemarker-2.3.19.jar 909KB
slf4j-api-1.6.1.jar 25KB
spring-web-4.1.4.RELEASE.jar 698KB
commons-beanutils-1.8.0.jar 226KB
jboss-logging-annotations-1.2.0.Beta1.jar 11KB
mysql-connector-java-5.1.6-bin.jar 687KB
jandex-1.1.0.Final.jar 75KB
spring-orm-4.1.4.RELEASE.jar 367KB
jboss-logging-3.1.3.GA.jar 56KB
ehcache-core-2.4.3.jar 983KB
xwork-core-2.3.20.jar 656KB
javassist-3.18.1-GA.jar 697KB
ognl-3.0.6.jar 223KB
hibernate-ehcache-4.3.8.Final.jar 132KB
aspectjweaver.jar 1.47MB
commons-logging-1.1.3.jar 61KB
spring-webmvc-4.1.4.RELEASE.jar 763KB
spring-context-support-4.1.4.RELEASE.jar 174KB
c3p0-0.9.2.1.jar 414KB
hibernate-commons-annotations-4.0.5.Final.jar 74KB
commons-pool.jar 61KB
commons-dbcp.jar 119KB
jboss-transaction-api_1.2_spec-1.0.0.Final.jar 27KB
spring-aop-4.1.4.RELEASE.jar 351KB
commons-io-2.2.jar 170KB
hibernate-c3p0-4.3.8.Final.jar 39KB
spring-tx-4.1.4.RELEASE.jar 247KB
struts2-spring-plugin-2.3.20.jar 21KB
commons-lang3-3.2.jar 376KB
commons-fileupload-1.3.1.jar 67KB
index.jsp 359B
test
resources
java
.settings
org.eclipse.jdt.core.prefs 598B
src
resources
struts.xml 3KB
db.properties 160B
ehcache.xml 4KB
hibernate.cfg.xml 1011B
applicationContext.xml 4KB
java
cn
edu
cqut
bf
dao
IBaseDao.java 628B
impl
BaseDaoImpl.java 6KB
action
domain
page
Pager.java 4KB
ObjectQuery.java 2KB
service
IBaseService.java 396B
impl
BaseServiceImpl.java 978B
util
.project 378B
.classpath 4KB
lib
spring-test-4.1.4.RELEASE.jar 491KB
共 80 条
- 1
vcchenliang
- 粉丝: 1
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页