bookdaoimpl.java

来自「一个基本的图书馆管理系统」· Java 代码 · 共 219 行

JAVA
219
字号
package c18.dao;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import c18.entity.Book;
import c18.entity.BookCategory;
import c18.helper.PageBean;
import c18.helper.PageResult;

/**
 * 图书持久化接口实现类
 * @author yuxd
 */
public class BookDaoImpl extends PageDao implements BookDao {
	/**
	 * 日志操作对象
	 */
    private static final Log log = LogFactory.getLog(BookDaoImpl.class);
    /**
	 * 以会话对象作参数的构造器
	 * @param session
	 */
	public BookDaoImpl(Session session){
		this.session = session;
	}
    /**
     * 根据图书号得到图书
     */
	public Book get(int bookNo) throws HibernateException {
		//得到对象
		return (Book)session.get(Book.class, new Integer(bookNo));
	}
	/**
	 * 得到所有图书(支持分页)
	 */
	public PageResult getBooks(PageBean pageBean) throws HibernateException {
		//组成查询sql
		String sql = "from Book book";
		//输出日志信息
		log.debug("getBooks:" + sql);
		PageResult pageresult = new PageResult();
		//生成查询对象
		Query query = session.createQuery(sql);
		
		//设置分页查询数
		query.setFirstResult((pageBean.getPage() - 1) * pageBean.getPageSize());
		query.setMaxResults(pageBean.getPageSize());
		
		//得到结果
		pageresult.setResultList(query.list());
		
		//查询总数
		if(pageBean.getCount() <= 0){
			pageBean.setCount(getCount(sql, new Object[]{}));
		}
		
		//设置分页信息
		pageresult.setPageBean(pageBean);
		
		//得到查询列表
		return pageresult;
	}
	/**
	 * 删除图书
	 */
	public void remove(Book book) throws HibernateException {
		//删除对象
		session.delete(book);

	}
	/**
	 * 保存图书
	 */
	public void save(Book book) throws HibernateException {
		//保存对象
		session.save(book);
	}
	/**
	 * 更新图书
	 */
	public void update(Book book) throws HibernateException {
		//更新对象
		session.update(book);

	}
	/**
	 * 保存图书分类
	 */
	public void save(BookCategory bookcategory) throws HibernateException {
		//保存对象
		session.save(bookcategory);
	}
	/**
	 * 根据分类号得到分类下的图书数目
	 */
	public int getBookCountByCategory(int categoryNo) throws HibernateException {
		//组成查询sql
		String sql = "select count(*) from BookCategory bookcategory where bookcategory.categoryNo=?";
		
		//输出日志信息
		log.debug("getBookCountByCategory:" + sql);
		log.debug("categoryNo:" + categoryNo);
		
		//生成查询对象
		Query query = session.createQuery(sql);
		query.setInteger(0, new Integer(categoryNo));
						
		//得到结果
		return ((Integer)query.list().get(0)).intValue();
	}
	/**
	 * 根据分类号得到分类下图书信息(支持分页)
	 */
	public PageResult getBooksByCategory(int categoryNo, PageBean pageBean) throws HibernateException {
		//组成查询sql
		String sql = "from Book book where exists (select bookcategory.bookNo from BookCategory bookcategory where bookcategory.bookNo=book.bookNo and bookcategory.categoryNo=?)";
		
		//输出日志信息
		log.debug("getBooksByCategory:" + sql);
		log.debug("categoryNo:" + categoryNo);
		
		PageResult pageresult = new PageResult();
		//生成查询对象
		Query query = session.createQuery(sql);
		query.setInteger(0, new Integer(categoryNo));
		//设置分页查询数
		query.setFirstResult((pageBean.getPage() - 1) * pageBean.getPageSize());
		query.setMaxResults(pageBean.getPageSize());
		
		//得到结果
		pageresult.setResultList(query.list());
		
		//查询总数
		if(pageBean.getCount() <= 0){
			pageBean.setCount(getCount(sql, new Object[]{new Integer(categoryNo)}));
		}
		
		//设置分页信息
		pageresult.setPageBean(pageBean);
		
		//得到查询列表
		return pageresult;
	}
	/**
	 * 根据图书号删除图书分类关系
	 */
	public void delBookCategoryByBook(int bookNo) throws HibernateException {
		//得到图书对应的图书分类关系列表
		List list = getBookCategoryByBook(bookNo);
		if(list != null){
			for(int i=0; i<list.size(); i++){
				BookCategory bookcategory = (BookCategory)list.get(i);
				//删除图书分类关系
				session.delete(bookcategory);
			}
		}
		
	}
	/**
	 * 得到图书相关的分类关系
	 */
	public List getBookCategoryByBook(int bookNo) throws HibernateException {
		//组成查询sql
		String sql = "from BookCategory bookcategory where bookcategory.bookNo=?";
		
		//输出日志信息
		log.debug("delBookCategoryByBook:" + sql);
		log.debug("bookNo:" + bookNo);
		
		//生成查询对象
		Query query = session.createQuery(sql);
		query.setInteger(0, new Integer(bookNo));
						
		//得到结果
		return query.list();
	}
	/**
	 * 根据关键字查询图书
	 */
	public PageResult findBooksByProperty(String propertyName, String propertyValue, PageBean pageBean) throws HibernateException {
		//组成查询sql
		String sql = "from Book book where book." + propertyName + " like ?";
		
		//输出日志信息
		log.debug("findBooksByProperty:" + sql);
		log.debug("propertyName:" + propertyName);
		log.debug("propertyValue:" + propertyValue);
		
		PageResult pageresult = new PageResult();
		//生成查询对象
		Query query = session.createQuery(sql);
		query.setString(0, "%" + propertyValue + "%");
		//设置分页查询数
		query.setFirstResult((pageBean.getPage() - 1) * pageBean.getPageSize());
		query.setMaxResults(pageBean.getPageSize());
		
		//得到结果
		pageresult.setResultList(query.list());
		
		//查询总数
		if(pageBean.getCount() <= 0){
			pageBean.setCount(getCount(sql, new Object[]{"%" + propertyValue + "%"}));
		}
		
		//设置分页信息
		pageresult.setPageBean(pageBean);
		
		//得到查询列表
		return pageresult;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?