package com.mis.common.hibernate3;
import static org.hibernate.EntityMode.POJO;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.Example.PropertySelector;
import org.hibernate.impl.CriteriaImpl;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.transform.ResultTransformer;
import org.hibernate.type.Type;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.util.Assert;
import com.mis.common.page.Pagination;
import com.mis.common.utils.MyBeanUtils;
/**
* DAO基类。
*
* 提供hql分页查询,example分页查询,拷贝更新等功能。
*
@author 王韬
*
* @param <T>
*/
@Repository
public abstract class BaseDaoImpl<T extends Serializable> implements BaseDao<T> {
protected Logger log = LoggerFactory.getLogger(getClass());
protected SessionFactory sessionFactory;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
public T save(T entity) {
Assert.notNull(entity);
getSession().save(entity);
return entity;
}
public Object update(Object entity) {
Assert.notNull(entity);
getSession().update(entity);
return entity;
}
public Object saveOrUpdate(Object entity) {
Assert.notNull(entity);
getSession().saveOrUpdate(entity);
return entity;
}
public Object merge(Object entity) {
Assert.notNull(entity);
return getSession().merge(entity);
}
public void delete(Object entity) {
Assert.notNull(entity);
getSession().delete(entity);
}
public T deleteById(Serializable id) {
Assert.notNull(id);
T entity = load(id);
getSession().delete(entity);
return entity;
}
public T load(Serializable id) {
Assert.notNull(id);
return load(id, false);
}
@SuppressWarnings("unchecked")
public T get(Serializable id) {
Assert.notNull(id);
return (T) getSession().get(getPersistentClass(), id);
}
@SuppressWarnings("unchecked")
public T load(Serializable id, boolean lock) {
Assert.notNull(id);
T entity = null;
if (lock) {
entity = (T) getSession().load(getPersistentClass(), id,
LockMode.UPGRADE);
} else {
entity = (T) getSession().load(getPersistentClass(), id);
}
return entity;
}
public List<T> findAll() {
return findByCriteria();
}
@SuppressWarnings("unchecked")
public List<T> findAll(OrderBy... orders) {
Criteria crit = createCriteria();
if (orders != null) {
for (OrderBy order : orders) {
crit.addOrder(order.getOrder());
}
}
return crit.list();
}
public Pagination findAll(int pageNo, int pageSize, OrderBy... orders) {
Criteria crit = createCriteria();
return findByCriteria(crit, pageNo, pageSize, null, OrderBy
.asOrders(orders));
}
/**
* 按HQL查询对象列表.
*
* @param hql
* hql语句
* @param values
* 数量可变的参数
*/
@SuppressWarnings("unchecked")
protected List find(String hql, Object... values) {
return createQuery(hql, values).list();
}
/**
* 按HQL查询唯一对象.
*/
protected Object findUnique(String hql, Object... values) {
return createQuery(hql, values).uniqueResult();
}
/**
* 按属性查找对象列表.
*/
@SuppressWarnings("unchecked")
public List<T> findByProperty(String property, Object value) {
Assert.hasText(property);
return createCriteria(Restrictions.eq(property, value)).list();
}
/**
* 按属性查找唯一对象.
*/
@SuppressWarnings("unchecked")
public T findUniqueByProperty(String property, Object value) {
Assert.hasText(property);
Assert.notNull(value);
return (T) createCriteria(Restrictions.eq(property, value))
.uniqueResult();
}
public int countByProperty(String property, Object value) {
Assert.hasText(property);
Assert.notNull(value);
return ((Number) (createCriteria(Restrictions.eq(property, value))
.setProjection(Projections.rowCount()).uniqueResult()))
.intValue();
}
@SuppressWarnings("unchecked")
protected Pagination find(Finder finder, int pageNo, int pageSize) {
int totalCount = countQueryResult(finder);
Pagination p = new Pagination(pageNo, pageSize, totalCount);
if (totalCount < 1) {
p.setList(new ArrayList());
return p;
}
Query query = getSession().createQuery(finder.getOrigHql());
finder.setParamsToQuery(query);
query.setFirstResult(p.getFirstResult());
query.setMaxResults(p.getPageSize());
List list = query.list();
p.setList(list);
return p;
}
@SuppressWarnings("unchecked")
protected List find(Finder finder) {
Query query = getSession().createQuery(finder.getOrigHql());
finder.setParamsToQuery(query);
query.setFirstResult(finder.getFirstResult());
if (finder.getMaxResults() > 0) {
query.setMaxResults(finder.getMaxResults());
}
List list = query.list();
return list;
}
@SuppressWarnings("unchecked")
public List<T> findByEgList(T eg, boolean anyWhere, Condition[] conds,
String... exclude) {
Criteria crit = getCritByEg(eg, anyWhere, conds, exclude);
return crit.list();
}
@SuppressWarnings("unchecked")
public List<T> findByEgList(T eg, boolean anyWhere, Condition[] conds,
int firstResult, int maxResult, String... exclude) {
Criteria crit = getCritByEg(eg, anyWhere, conds, exclude);
crit.setFirstResult(firstResult);
crit.setMaxResults(maxResult);
return crit.list();
}
public Pagination findByEg(T eg, boolean anyWhere, Condition[] conds,
int page, int pageSize, String... exclude) {
Order[] orderArr = null;
Condition[] condArr = null;
if (conds != null && conds.length > 0) {
List<Order> orderList = new ArrayList<Order>();
List<Condition> condList = new ArrayList<Condition>();
for (Condition c : conds) {
if (c instanceof OrderBy) {
orderList.add(((OrderBy) c).getOrder());
} else {
condList.add(c);
}
}
orderArr = new Order[orderList.size()];
condArr = new Condition[condList.size()];
orderArr = orderList.toArray(orderArr);
condArr = condList.toArray(condArr);
}
Criteria crit = getCritByEg(eg, anyWhere, condArr, exclude);
return findByCriteria(crit, page, pageSize, null, orderArr);
}
/**
* 根据查询函数与参数列表创建Query对象,后续可进行更多处理,辅助函数.
*/
protected Query createQuery(String queryString, Object... values) {
Assert.hasText(queryString);
Query queryObject = getSession().createQuery(queryString);
if (values != null) {
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
return queryObject;
}
/**
* 按Criterion查询对象列表.
*
* @param criterion
* 数量可变的Criterion.
*/
@SuppressWarnings("unchecked")
protected List<T> findByCriteria(Criterion... criterion) {
return createCriteria(criterion).list();
}
@SuppressWarnings("unchecked")
protected Pagination findByCriteria(Criteria crit, int pageNo,
没有合适的资源?快使用搜索试试~ 我知道了~
mis.rar_MyBeanUtils _hibernate @Finder_mis_springmvc_springmvc h
共303个文件
jpg:70个
jar:52个
gif:52个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 44 浏览量
2022-09-19
18:31:57
上传
评论
收藏 16.66MB RAR 举报
温馨提示
springmvc管理hibernate,
资源详情
资源评论
资源推荐
收起资源包目录
mis.rar_MyBeanUtils _hibernate @Finder_mis_springmvc_springmvc h (303个子文件)
BaseDaoImpl.class 17KB
TreeIntercptor.class 10KB
Finder.class 9KB
Finder.class 9KB
BaseManagerImpl.class 8KB
HibernateBaseDao.class 6KB
HibernateSimpleDao.class 6KB
SpringEhCacheProvider.class 4KB
MyBeanUtils.class 4KB
ImageCaptchaServlet.class 3KB
Md5PwdEncoder.class 3KB
BaseManager.class 3KB
MisLoginAct.class 3KB
Updater.class 3KB
BaseUser.class 2KB
Updater.class 2KB
BaseDao.class 2KB
SimplePage.class 2KB
UrlInterceptor.class 2KB
AdminContextInterceptor.class 2KB
OrderBy.class 2KB
OrderBy.class 2KB
PriorityComparator.class 1KB
Updater$UpdateMode.class 1KB
Updater$UpdateMode.class 1KB
Pagination.class 1KB
OrderBy$OrderType.class 1KB
OrderBy$OrderType.class 1KB
UserMngImpl.class 1KB
BaseDaoImpl$NotBlankPropertySelector.class 1KB
Nullable.class 737B
HibernateTree.class 736B
Nullable.class 733B
UserDaoImpl.class 724B
Condition.class 538B
Condition.class 536B
HibernateTree.class 495B
User.class 485B
PwdEncoder.class 394B
UserAct.class 362B
Paginable.class 306B
UserMng.class 259B
UserDao.class 247B
PriorityInterface.class 201B
.classpath 587B
org.eclipse.wst.common.component 372B
org.eclipse.wst.jsdt.ui.superType.container 49B
css.css 11KB
css.css 11KB
login.css 1KB
login.css 1KB
Thumbs.db 51KB
Thumbs.db 51KB
messager_banner.gif 43KB
messager_banner.gif 43KB
Error.gif 13KB
Error.gif 13KB
admark.gif 5KB
admark.gif 5KB
linkarrow.gif 3KB
linkarrow.gif 3KB
topbar2.gif 2KB
topbar2.gif 2KB
topbar.gif 2KB
topbar.gif 2KB
form_btn1.gif 2KB
form_btn1.gif 2KB
code.gif 2KB
code.gif 2KB
108.gif 1KB
108.gif 1KB
form_btn2.gif 1KB
form_btn2.gif 1KB
复件 topbar.gif 1KB
复件 topbar.gif 1KB
复件 topbar2.gif 1KB
复件 topbar2.gif 1KB
arrow.gif 1014B
arrow.gif 1014B
delete.gif 997B
delete.gif 997B
nav-right.gif 628B
nav-right.gif 628B
main_01.gif 615B
main_01.gif 615B
main_02.gif 608B
main_02.gif 608B
img_search.gif 568B
img_search.gif 568B
left_01.gif 502B
left_01.gif 502B
btn_searchon.gif 467B
btn_searchon.gif 467B
main_05.gif 353B
main_05.gif 353B
btn_bg.gif 343B
btn_bg.gif 343B
edit.gif 334B
edit.gif 334B
main_03.gif 172B
共 303 条
- 1
- 2
- 3
- 4
小波思基
- 粉丝: 70
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0