package com.framework;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.CriteriaSpecification;
public abstract class BaseDao<T, PK extends Serializable> {
private Class<T> entityClass;
@Resource
private SessionFactory sessionFactory;
public BaseDao() {
this.entityClass = null;
Class c = getClass();
Type t = c.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] p = ((ParameterizedType) t).getActualTypeArguments();
this.entityClass = (Class<T>) p[0];
}
}
public Session getSession(){
return this.sessionFactory.getCurrentSession();
}
// **************基本增删改查*********************
public void save(T entity) throws Exception {
this.sessionFactory.getCurrentSession().save(entity);
}
public void update(T entity) throws Exception {
this.sessionFactory.getCurrentSession().update(entity);
}
public void delete(Object entity) throws Exception {
this.sessionFactory.getCurrentSession().delete(entity);
}
public void delete(Serializable id) throws Exception {
this.delete(this.sessionFactory.getCurrentSession().load(entityClass, id));
}
public T get(Serializable id) throws Exception {
return (T) this.sessionFactory.getCurrentSession().get(entityClass, id);
}
public T load(Serializable id) throws Exception {
return (T) this.sessionFactory.getCurrentSession().load(entityClass, id);
}
// **************HQL***************************
/**
*
* @desc 通过hql查询单个对象
* @author wangwei
* @param hql 查询语句
* @param params 查询语句参数
* @return 单个对象
* @throws Exception
*/
public T findOne(String hql, Object[] params) throws Exception {
Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
}
/**
*
* @desc 按条件查询数据
* @author wangwei
* @param hql 条件查询语句
* @param params 查询参数
* @return 按条件查询的数据
* @throws Exception
*/
public List<T> findByProperty(String hql, Object[] params) throws Exception {
Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
return query.list();
}
/**
*
* @desc 按条件查询数据数量
* @author wangwei
* @param hql 条件查询语句
* @param params 查询参数
* @return 数据数量
* @throws Exception
*/
public Long findCountByPage(String hql, Object[] params) throws Exception {
Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
return (Long) query.uniqueResult();
}
/**
*
* @desc 按条件分页查询数据
* @author wangwei
* @param pageNum
* @param pageSize
* @param hql
* @param params
* @return
* @throws Exception
*/
public List<T> findListByPage(int pageNum, int pageSize, String hql, Object[] params) throws Exception {
Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
query.setFirstResult((pageNum - 1) * pageSize);
query.setMaxResults(pageSize);
return query.list();
}
/**
*
* @desc 按条件分页查询数据,封装到Page对象中
* @author wangwei
* @param pageNumber 页码
* @param pageSize 每页数据个数
* @param hql 查询语句
* @param params 查询参数
* @return 分页数据Page对象
* @throws Exception
*/
public Page<T> findByPage(int pageNumber, int pageSize, String hql, Object[] params) throws Exception {
long total = findCountByPage("select count(*) " + hql, params);
List<T> rows = findListByPage(pageNumber, pageSize, hql, params);
Page<T> page = new Page<T>(pageNumber, pageSize);
page.setTotalCount((int) total);
page.setList(rows);
return page;
}
// **************SQL***************************
/**
* @desc 通过原生SQL进行新增,修改,删除
* @author wangwei
* @param sql
* @param params
* @return
* @throws Exception
*/
public int excuteBySql(String sql, Object[] params) throws Exception {
int result;
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
result = query.executeUpdate();
return result;
}
/**
* @desc 通过原生SQL进行查询 返回单个结果集,以Map<String, Object>形式存放
* @author wangwei
* @param sql
* @param params
* @return
* @throws Exception
*/
public Map<String, Object> findOneBySql(String sql, Object[] params) throws Exception {
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
Map<String, Object> result = (Map<String, Object>) query.uniqueResult();
return result;
}
/**
* @desc 通过原生SQL进行查询 返回多个结果集,以List<Map<String, Object>>形式存放
* @author wangwei
* @param sql
* @param params
* @return
* @throws Exception
*/
public List<Map<String, Object>> findBySql(String sql, Object[] params) throws Exception {
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
List<Map<String, Object>> list = query.list();
return list;
}
/**
* @desc 通过原生SQL进行查询 返回多个结果集,以List<Map<String, Object>>形式存放
* @author wangwei
* @param sql
* @param params
* @return
* @throws Exception
*/
public List<Map<String, Object>> findBySql(String sql, Map params) throws Exception {
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
Iterator<String> keys = params.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
Object value = params.get(key);
if (value instanceof Collection)
query.setParameterList(key, (Collection) value);
else
query.setParameter(key, value);
}
List<Map<String, Object>> list = query.list();
return list;
}
/**
*
* @desc 分页原生SQL进行统计数量
* @author wangwei
* @createDate 2014年10月13日
* @param sql
* @param params
* @return
* @throws Exception
*/
public Long findCount4PageBySql(String sql, Object[] params) throws Exception {
SQLQuery query = this.sessionFactory.getCurrentSession().createSQLQuery(sql);
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++)
query.setParameter(i, params[i]);
}
return Long.parseLong(query.uniqueResult().toString());
}
public Long findCount4PageBySql2(String sql, Map par
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Jcrop ssh 头像上传前后台 (281个子文件)
BaseDao.class 11KB
ImageUtil.class 4KB
UploadAction.class 4KB
Page.class 2KB
UserInfoDaoImpl.class 2KB
UserInfo.class 1009B
UserInfoServiceImpl.class 860B
.classpath 661B
emoji-picker.coffee 3KB
org.eclipse.wst.common.component 488B
org.eclipse.wst.jsdt.ui.superType.container 49B
zui.css 180KB
zui.lite.css 136KB
uikit.docs.min.css 128KB
ueditor.css 41KB
ueditor.min.css 33KB
main5152.css 33KB
zui-theme.css 30KB
login.css 28KB
kindeditor.css 24KB
responsive5152.css 21KB
kindeditor.min.css 19KB
kindeditor.min.css 19KB
chosen.css 13KB
chosen.min.css 10KB
style.css 10KB
zui.dashboard.css 7KB
default.css 6KB
datetimepicker.css 6KB
zui.datatable.css 6KB
zui.dashboard.min.css 5KB
emoji.css 5KB
datetimepicker.min.css 5KB
zui.datatable.min.css 4KB
zui.calendar.css 3KB
zui.imgcutter.css 3KB
cover.css 3KB
zui.calendar.min.css 3KB
zui.board.css 3KB
zui.imgcutter.min.css 2KB
main.css 2KB
jquery.Jcrop.min.css 2KB
zui.board.min.css 2KB
normalize.css 2KB
zui.colorpicker.css 2KB
nanoscroller.css 1KB
zui.colorpicker.min.css 1KB
style.css 1KB
demo.css 763B
prettify.css 743B
zui.chosenicons.css 673B
zui.chosenicons.min.css 577B
bootbox.css 54B
bootbox.min.css 41B
loading.gif 3KB
logo_touming.gif 2KB
Jcrop.gif 329B
sequence.gif 236B
blank.gif 49B
hibernate-core-5.0.0.Final.jar 5.29MB
lucene-core-4.10.4.jar 2.44MB
jgroups-3.6.2.Final.jar 2.2MB
lucene-analyzers-common-4.10.4.jar 1.62MB
spring-context-4.2.2.RELEASE.jar 1.04MB
spring-core-4.2.2.RELEASE.jar 1.02MB
hibernate-search-engine-5.4.0.Final.jar 967KB
spring-webmvc-4.2.2.RELEASE.jar 852KB
mysql-connector-java-5.1.20-bin.jar 784KB
jackson-mapper-asl-1.9.13.jar 762KB
spring-web-4.2.2.RELEASE.jar 751KB
spring-beans-4.2.2.RELEASE.jar 713KB
javassist-3.18.1-GA.jar 697KB
google-collections-1.0.jar 625KB
hibernate-entitymanager-5.0.0.Final.jar 576KB
spring-test-4.2.2.RELEASE.jar 549KB
tika-parsers-1.4.jar 499KB
tika-core-1.4.jar 478KB
spring-orm-4.2.2.RELEASE.jar 455KB
antlr-2.7.7.jar 435KB
spring-websocket-4.2.2.RELEASE.jar 425KB
avro-1.7.6.jar 416KB
spring-jdbc-4.2.2.RELEASE.jar 413KB
spring-messaging-4.2.2.RELEASE.jar 364KB
spring-aop-4.2.2.RELEASE.jar 358KB
dom4j-1.6.1.jar 307KB
standard.jar 287KB
spring-jms-4.2.2.RELEASE.jar 273KB
spring-tx-4.2.2.RELEASE.jar 259KB
spring-expression-4.2.2.RELEASE.jar 256KB
commons-compress-1.5.jar 250KB
jackson-core-asl-1.9.13.jar 227KB
xml-apis-1.3.03.jar 191KB
gson-2.2.2.jar 185KB
jandex-2.0.0.Final.jar 183KB
commons-io-2.4.jar 181KB
lucene-facet-4.10.3.jar 173KB
spring-context-support-4.2.2.RELEASE.jar 173KB
spring-webmvc-portlet-4.2.2.RELEASE.jar 173KB
hibernate-search-orm-5.4.0.Final.jar 137KB
hibernate-jpa-2.1-api-1.0.0.Final.jar 111KB
共 281 条
- 1
- 2
- 3
资源评论
普通网友
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功