📄 bookdao.java
字号:
package com.olr.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.olr.beans.Book;
import com.olr.beans.User;
import com.olr.util.Pager;
/**
* A data access object (DAO) providing persistence and search support for Book
* entities. Transaction control of the save(), update() and delete() operations
* can directly support Spring container-managed transactions or they can be
* augmented to handle user-managed Spring transactions. Each of these methods
* provides additional information for how to configure it for the desired type
* of transaction control.
*
* @see com.olr.beans.Book
* @author MyEclipse Persistence Tools
*/
public class BookDAO extends HibernateDaoSupport implements IBookDAO{
public void deleteBook(int bookId) {
Object b=this.getHibernateTemplate().load(Book.class,new Integer(bookId));
this.getHibernateTemplate().delete(b);
}
public Pager getAllBooks(int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc("recomCount"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public Pager getAllBooks(String category,String sort,int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.add(Restrictions.eq("category", category));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc(sort));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public Pager getAllBooks(String sort,int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc(sort));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public Pager getAllWorks(int userId,int pageNo, int pageSize){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.eq("userId", userId));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc("updateTime"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public List<Book> getTopWorks(int userId,int topNum){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.eq("userId", userId));
criteria.addOrder(Order.desc("updateTime"));
criteria.setMaxResults(topNum);
List<Book> result=criteria.list();
return result;
}
public List<User> getAllSubscribers(int bookId) {
Book book =this.getBookById(bookId);
Set<User> subscribers =book.getSubscribers();
List<User> subscribersList=new ArrayList();
subscribersList.addAll(subscribers);
return subscribersList;
}
public Book getBookById(int bookId) {
return (Book) this.getHibernateTemplate().get(Book.class,new Integer(bookId));
}
public Book getBookByName(String bookName) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.eq("bookname", bookName));
List<Book> result=criteria.list();
session.close();
return result.get(0);
}
public Pager getBooksPagerByCategory(String category, String order,
int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.add(Restrictions.eq("category", category));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc("order"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public List<Book> getTopRecomBooks(int topNum){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.addOrder(Order.desc("recomCount"));
criteria.setMaxResults(topNum);
List<Book> result=criteria.list();
return result;
}
public List<Book> getTopCategoryBooks(String category,int topNum){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.add(Restrictions.eq("category",category));
criteria.addOrder(Order.desc("recomCount"));
criteria.setMaxResults(topNum);
List<Book> result=criteria.list();
return result;
}
public List<Book> getTopClickBooks(int topNum){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.addOrder(Order.desc("clickCount"));
criteria.setMaxResults(topNum);
List<Book> result=criteria.list();
return result;
}
public List<Book> getTopNewBooks(int topNum){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.eq("status",0));
criteria.addOrder(Order.desc("updateTime"));
criteria.setMaxResults(topNum);
List<Book> result=criteria.list();
return result;
}
public List<Book> getTopUpdateBooks(int topNum){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.eq("status",1));
criteria.addOrder(Order.desc("updateTime"));
criteria.setMaxResults(topNum);
List<Book> result=criteria.list();
return result;
}
public void insertBook(Book book) {
this.getHibernateTemplate().save(book);
}
public Pager searchByBookName(String booknameLike, int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.add(Restrictions.ilike("bookname","%"+booknameLike+"%",MatchMode.ANYWHERE));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc("recomCount"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public Pager searchByWriter(String writerLike, int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.add(Restrictions.ilike("writer","%"+writerLike+"%",MatchMode.ANYWHERE));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc("recomCount"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public Pager search(String keyWord, int pageNo, int pageSize) {
Session session=null;
Transaction tx=null;
session=this.getSessionFactory().openSession();
tx=session.beginTransaction();
String hql = "from Book as b Where b.bookname like ? or b.writer like ? or b.label like ? or b.discription like ?";
Query q = session.createQuery(hql) ;
q.setString(0, "%" + keyWord + "%");
q.setString(1, "%" + keyWord + "%");
q.setString(2, "%" + keyWord + "%");
q.setString(3, "%" + keyWord + "%");
int rowCount=q.list().size();
int startIndex=pageSize*(pageNo-1);
q.setFirstResult(startIndex);
q.setMaxResults(pageSize);
List<Book> result=q.list();
tx.commit();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public Pager searchByLabel(String labelLike, int pageNo, int pageSize) {
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria=session.createCriteria(Book.class);
criteria.add(Restrictions.ne("status", 3));
criteria.add(Restrictions.ilike("label","%"+labelLike+"%",MatchMode.ANYWHERE));
int rowCount=((Integer)criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
int startIndex=pageSize*(pageNo-1);
criteria.addOrder(Order.desc("recomCount"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List<Book> result=criteria.list();
session.close();
return new Pager(pageSize,pageNo,rowCount,result);
}
public void updateBook(Book book) {
this.getHibernateTemplate().update(book);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -