package cn.hbook.dao.impl;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;
import cn.hbook.bean.TBook;
import cn.hbook.dao.IBookDao;
import cn.hbook.form.QueryBookInfo;
@Transactional
public class BookDaoImpl extends HibernateDaoSupport implements IBookDao {
private int pageSize = 8;
private int currentPage = 1;
//添加书籍
public boolean save(TBook book) throws Exception {
System.out.println("dao - svae book");
//this.getSession().clear();
this.getHibernateTemplate().merge(book); //这样可以在添加书的时候同时更新他的作者
return true;
}
//删除书籍
public boolean delete(TBook book) throws Exception {
this.getHibernateTemplate().delete(book);
return true;
}
//批量删除
public boolean deleteAll(List<String> ids) throws Exception {
Set<TBook> delBooks = new HashSet<TBook>();
for (String id : ids) {
delBooks.add(new TBook(Integer.parseInt(id.trim())));
}
this.getHibernateTemplate().deleteAll(delBooks);
return true;
}
//更新书籍信息
public boolean update(TBook book) throws Exception {
this.getHibernateTemplate().merge(book);
return true;
}
//根据id查询数据
public TBook queryById(Integer bookid) throws Exception {
TBook book = this.getHibernateTemplate().get(TBook.class, bookid);
return book;
}
//根据ISBN查找书籍
public TBook queryBookByIsbn(String isbn) throws Exception {
@SuppressWarnings("unchecked")
List<TBook> books = this.getHibernateTemplate().find("from TBook b where b.isbn = ? ", isbn);
if (null != books && books.size() > 0) {
return books.get(0);
}
return null;
}
//查询所有书籍
@SuppressWarnings("unchecked")
public List<TBook> queryBooks() throws Exception {
List<TBook> books = this.getHibernateTemplate().find("from TBook");
return books;
}
//根据类型查找书籍
@SuppressWarnings("unchecked")
public List<TBook> queryBooksByCategory(QueryBookInfo queryBookInfo) throws Exception {
final Integer type = queryBookInfo.getType();
//分段查询
final Date beginDate = queryBookInfo.getBeginDate(); //出版时间段
final Date endDate = queryBookInfo.getEndDate();
final Double beginPrice = queryBookInfo.getBeginPrice(); //价格段查询
final Double endPrice = queryBookInfo.getEndPrice();
final Integer beginGrade = queryBookInfo.getBeginGrade(); // 按客户评分
final Integer endGrade = queryBookInfo.getEndGrade();
final Double beginDiscount = queryBookInfo.getBeginDiscount(); //按折扣查
final Double endDiscount = queryBookInfo.getEndDiscount();
final Integer beginStockNum = queryBookInfo.getBeginStockNum(); //库存量
final Integer endStockNum = queryBookInfo.getEndStockNum();
//排序条件
final String orderByPrice = queryBookInfo.getOrderByPrice(); //价格排序
final String orderByDate = queryBookInfo.getOrderByDate(); //时间排序
final String orderBySaleNum = queryBookInfo.getOrderBySaleNum(); //销量排序
final String orderByGrade = queryBookInfo.getOrderByGrade(); //按用户评分
final String orderByDiscount = queryBookInfo.getOrderByDiscount(); //按折扣
List<TBook> books = this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session s)
throws HibernateException, SQLException {
//HQL语句
StringBuilder hql = new StringBuilder(" select distinct b from TBook b join b.TAuthors a where 1 = 1 and (b.type = ? or b.ftype = ? ) ");
// 查询结果
List<TBook> books = new ArrayList<TBook>();
//存放查询参数
List<Object> params = new ArrayList<Object>();
params.add(type);
params.add(type); //首先将参数几放入
//动态的拼接hql语句
//时间段
if (beginDate != null) {
hql.append(" and b.publishDate >= ? ");
params.add(beginDate);
}
if (endDate != null) {
hql.append(" and b.publishDate <= ? ");
params.add(endDate);
}
//价格段
if (beginPrice != null) {
hql.append(" and b.hbPrice >= ? ");
params.add(beginPrice);
}
if (endPrice != null) {
hql.append(" and b.hbPrice <= ? ");
params.add(endPrice);
}
//评分段
if(beginGrade != null) {
hql.append(" and b.grade >= ? ");
params.add(beginGrade);
}
if (endGrade != null) {
hql.append(" and b.grade <= ? ");
params.add(endGrade);
}
//折扣段
if (beginDiscount != null) {
hql.append(" and b.discount >= ? ");
params.add(beginDiscount);
}
if (endDiscount != null) {
hql.append(" and b.discount <= ? ");
params.add(endDiscount);
}
//库存量
if (beginStockNum != null) {
hql.append(" and b.stockNum >= ? ");
params.add(beginStockNum);
}
if (endStockNum != null) {
hql.append(" and b.stockNum <= ? ");
params.add(endStockNum);
}
//是否已经有order
boolean isOrder = false;
//按价格排序
if (orderByPrice != null) {
if (!isOrder) hql.append(" order by ");
if (orderByPrice.equals("1")) {
hql.append(" b.hbPrice asc , ");
} else {
hql.append(" b.hbPrice desc , ");
}
isOrder = true;
}
//时间排序
if (orderByDate != null) {
if (!isOrder) hql.append(" order by ");
if (orderByDate.equals("1")) {
hql.append(" b.publishDate asc , ");
} else {
hql.append(" b.publishDate desc , ");
}
isOrder = true;
}
//销量排序
if (orderBySaleNum != null) {
if (!isOrder) hql.append(" order by ");
if (orderBySaleNum.equals("1")) {
hql.append(" b.saleNum asc , ");
} else {
hql.append(" b.saleNum desc , ");
}
isOrder = true;
}
//按评分排序
if (orderByGrade != null) {
if (!isOrder) hql.append(" order by ");
if (orderByGrade.equals("1")) {
hql.append(" b.grade asc , ");
} else {
hql.append(" b.grade desc, ");
}
isOrder = true;
}
//按折扣查询
if (orderByDiscount != null) {
if (!isOrder) hql.append(" order by ");
if (orderByDiscount.equals("1")) {
hql.append(" b.discount asc , ");
} else {
hql.append(" b.discount desc , ");
}
isOrder = true;
}
//去掉最后边的","
String result = "";
if (isOrder == true) {
result = hql.substring(0, hql.length() - 1);
} else {
result = hql.toString();
}
//设置查询参数
System.out.println("Category dao hql = " + hql );
Query q = s.createQuery(result);
for (int i = 0; i < params.size(); ++i) {
q.setParameter(i, params.get(i));
System.out.println("参数 " + i + " = " + params.get(i));
}
// 设置页面
q.setFirstResult((currentPage - 1) * pageSize);
q.setMaxResults(pageSize);
books = q.list();
return books;
}
}
);
return books;
}
//按时间排续 查出新书
@SuppressWarnings("unchecked")
public List<TBook> queryBooksOrderByDate(QueryBookInfo queryBookInfo) throws Exception{
//没有目的性的查询不用枚举细节信息
//分段查询
final Date beginD
没有合适的资源?快使用搜索试试~ 我知道了~
基于Structs+Hibernate+Spring+mysql 实现的网上书店前后台系统, 毕业设计.zip
共817个文件
jpg:139个
gif:127个
jar:106个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2024-03-19
23:05:15
上传
评论
收藏 50.09MB ZIP 举报
温馨提示
基于Structs+Hibernate+Spring+mysql 实现的网上书店前后台系统, 毕业设计.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Structs+Hibernate+Spring+mysql 实现的网上书店前后台系统, 毕业设计.zip (817个子文件)
all-wcprops 4KB
all-wcprops 228B
BookAction.class 25KB
UIAction.class 22KB
BookDaoImpl.class 13KB
UserAction.class 12KB
PaymentAction.class 8KB
BookServiceImplTest.class 7KB
AuthorAction.class 7KB
AuthorDaoImpl.class 6KB
UserDaoImpl.class 6KB
BookDaoImpl$7.class 6KB
QueryBookInfo.class 6KB
BookDaoImpl$8.class 6KB
TBook.class 6KB
BookDaoImpl$6.class 6KB
LoginAction.class 6KB
CartAction.class 5KB
RecommenderServiceImpl.class 5KB
TUser.class 5KB
LogDaoImpl.class 5KB
BookDaoImpl$1.class 5KB
BookDaoImpl$5.class 5KB
BookDaoImpl$3.class 4KB
BookDaoImpl$4.class 4KB
BookDaoImpl$2.class 4KB
UserServiceImplTest.class 4KB
AuthorServiceImplTest.class 4KB
OrderDetailServiceImplTest.class 4KB
OrderDaoImpl.class 4KB
OrderDetailDaoImpl.class 4KB
BookServiceImpl.class 4KB
UserDaoImpl$2.class 4KB
OrderServiceImplTest.class 4KB
OrderDetailDaoImpl$1.class 4KB
OrderDetailDaoImpl$2.class 3KB
LogServiceImplTest.class 3KB
EvaluateAction.class 3KB
OrderAction.class 3KB
OrderDetailAction.class 3KB
UserAop.class 3KB
OrderDaoImpl$1.class 3KB
LogAction.class 3KB
OrderDaoImpl$2.class 3KB
UserServiceImpl.class 3KB
UserDaoImpl$1.class 3KB
PaymentRequest.class 3KB
BookAop.class 3KB
LogDaoImpl$1.class 3KB
LogDaoImpl$2.class 3KB
AuthorServiceImpl.class 3KB
AuthorAop.class 3KB
QueryOrderDetailInfo.class 3KB
DigestUtil.class 3KB
DBUtils.class 3KB
SyscodeUtils.class 3KB
TOrderdetail.class 2KB
AuthorDaoImpl$2.class 2KB
EvaluateServiceImpl.class 2KB
AuthorDaoImpl$1.class 2KB
OrderServiceImpl.class 2KB
QueryOrderInfo.class 2KB
PaymentUtil.class 2KB
QueryUserInfo.class 2KB
OrderDetailServiceImpl.class 2KB
TOrder.class 2KB
EvaluateDaoImpl.class 2KB
LogServiceImpl.class 2KB
TAuthor.class 2KB
TDescription.class 2KB
TLog.class 2KB
loginInterceptor.class 2KB
QueryLogInfo.class 2KB
CartItem.class 2KB
TSyscode.class 2KB
ClientLoginInterceptor.class 2KB
TCategory.class 2KB
TokenProcessor.class 1KB
Category.class 1KB
MD5.class 1KB
IBookService.class 1KB
IBookDao.class 1KB
Test.class 1KB
IAuthorService.class 1KB
IAuthorDao.class 1KB
IUserService.class 1KB
IUserDao.class 1021B
ConfigInfo.class 993B
BookStore.class 988B
IOrderService.class 838B
IOrderDao.class 826B
IOrderDetailService.class 740B
IOrderDetailDao.class 728B
ILogService.class 613B
ILogDao.class 601B
IRecommenderService.class 406B
IEvaluateService.class 351B
IEvaluateDao.class 339B
RecommenderImplTest.class 322B
.classpath 4KB
共 817 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
白如意i
- 粉丝: 6556
- 资源: 3230
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的异常姿势识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 隐藏文件展示工具,用来展示被病毒隐藏的文件
- 基于Matlab的图像分割系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB指纹门禁GUI设计源码+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的仪表指数识别系统霍夫曼变换+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 疲劳驾驶检测专识别GUI源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功