hibernate用到的dao方法
public class BaseDao<T> {
protected SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
return this.sessionFactory.getCurrentSession();
}
public <T> T queryById(Class<T> entityClass, Integer id) {
return (T) getSession().get(entityClass, id);
}
public <T> void save(T t) {
getSession().save(t);
}
public <T> void update(T t) {
getSession().update(t);
}
public <T> void delete(T t) {
getSession().delete(t);
}
public <T> void delete(Class<T> entityClass, Integer id) {
getSession().delete(queryById(entityClass, id));
}
/**
*
* @Title: deleteByProperty
* @Description: 删除数据
* @param @param entityClass 实体类
* @param @param property 要删除的表字段
* @param @param 表字段的值
* @return void
* @throws
*/
public void deleteByProperty(Class<T> entityClass,String property, String value) {
String hql = "delete from " + entityClass.getSimpleName()
+ " where " + property + "='" + value + "'";
Query query = getSession().createQuery(hql);
query.executeUpdate();
}
/**
*
* @param <T>
* @param hql
* @param entityClass
* @return
*/
public <T> List<T> queryForList(String hql) {
return queryForList(hql, new Object[] {});
}
/**
*
* @param <T>
* @param hql
* @param entityClass
* @param param
* @return
*/
public <T> List<T> queryForList(String hql, Object param) {
return queryForList(hql, new Object[] { param });
}
/**
*
* @param <T>
* @param hql
* @param entityClass
* @param params
* @return
*/
public <T> List<T> queryForList(String hql, Object[] params) {
Query query = getSession().createQuery(hql);
setQueryParams(query, params);
return (List<T>) query.list();
}
/**
*
* @param <T>
* @param hql
* @param entityClass
* @param params
* @return
*/
public T queryForObject(String hql, Object[] params) {
Query query = getSession().createQuery(hql);
setQueryParams(query, params);
return (T)query.uniqueResult();
}
/*
* 多表查询返回一个自定义实体
*/
public ScrollableResults queryForScrollableResults(String hql,Object[] params)
{
Query query = getSession().createQuery(hql);
setQueryParams(query, params);
return query.scroll();
}
public <T> List<T> findByPage(String hql,
int firstResult, int maxResult) {
return findByPage(hql, new Object[] {}, firstResult,
maxResult);
}
public <T> List<T> findByPage(String hql,
Object param, int firstResult, int maxResult) {
return findByPage(hql, new Object[] { param },
firstResult, maxResult);
}
public <T> List<T> findByPage(String hql,
Object[] params, int firstResult, int maxResult) {
Query query = getSession().createQuery(hql);
setQueryParams(query, params);
query.setFirstResult(firstResult);
query.setMaxResults(maxResult);
query.setCacheable(true); // 设置缓存
return (List<T>) query.list();
}
private void setQueryParams(Query query, Object[] params) {
if (null == params) {
return;
}
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
public List<T> getByPage(String hql,
Object[] params, int page, int pagesize) {
Query query = getSession().createQuery(hql);
setQueryParams(query, params);
query.setFirstResult((page-1)*pagesize);
query.setMaxResults(pagesize*page);
query.setCacheable(true); // 设置缓存
return (List<T>)query.list();
}
public List<Object[]> getObjectByPage(String hql,
Object[] params, int page, int pagesize) {
Query query = getSession().createQuery(hql);
setQueryParams(query, params);
query.setFirstResult((page-1)*pagesize);
query.setMaxResults(pagesize*page);
query.setCacheable(true); // 设置缓存
return (List<Object[]>)query.list();
}
}
涉及到分页,查询,修改,保存,删除