hibernate 数据库操作模板

来源:互联网 发布:手机壳效果图软件 编辑:程序博客网 时间:2024/05/14 10:31
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.xinxi.news.util.HibernateUtil;
public class BaseDao<T> {
Class<T> clazz;
public BaseDao(Class clazz) {
this.clazz = clazz;
}
public Session getSession() {
return HibernateUtil.getSession();
}
public List<T> list() {
Session session = getSession();
List<T> list = session.createCriteria(clazz).list();
session.close();
return list;
}
public T get(Integer id) {
Session session = getSession();
T t = session.get(clazz, id);
session.close();
return t;
}
public void save(T t) {
Session session = getSession();
Transaction transaction = session.beginTransaction();
session.save(t);
transaction.commit();
session.close();
}
public void update(T t) {
Session session = getSession();
Transaction transaction = session.beginTransaction();
session.update(t);
transaction.commit();
session.close();
}
public void delete(Integer id) {
Session session = getSession();
Transaction transaction = session.beginTransaction();
T t = session.get(clazz, id);
session.delete(t);
transaction.commit();
session.close();
}

}


import java.util.List;
import com.xinxi.news.model.News;
public class NewsDao extends BaseDao<News> {
static NewsDao newsDao = new NewsDao();
public static NewsDao getInstance() {
return newsDao;
}
private NewsDao() {
super(News.class);
}
public List<News> listByType(Integer typeId) {
return getSession().createQuery("from News n where n.newsType.id=? order by n.publishDate desc").setInteger(0, typeId).list();
}
public List<News> listByType(Integer typeId, Integer pageNo, Integer pageSize) {
return getSession().createQuery("from News n where n.newsType.id=? order by n.publishDate desc").setInteger(0, typeId).setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list();
}
public Long getTotalCount(Integer typeId) {
return (Long) getSession().createQuery("select count(*) from News n where n.newsType.id=?").setInteger(0,typeId).uniqueResult();
}
}

0 0