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 + -
显示快捷键?