javaweb图书商城设计之图书模块(4)

所属分类: 软件编程 / java 阅读数: 55
收藏 0 赞 0 分享

本文接着上一篇图书商城分类模块进行学习,供大家参考,具体内容如下

1、创建相关类

cn.itcast.bookstore.book
domain:Book
dao:BookDao
service :BookService
web.servle:BookServlet

Book

public class Book {
 private String bid;
 private String bname;
 private double price;
 private String author;
 private String image;
 private Category category;
 private boolean del;
}

BookDao

public class BookDao {
 private QueryRunner qr = new TxQueryRunner();

 /**
 * 查询所有图书
 * @return
 */
 public List<Book> findAll() {
 try {
 String sql = "select * from book where del=false";
 return qr.query(sql, new BeanListHandler<Book>(Book.class));
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }

 /**
 * 按分类查询
 * @param cid
 * @return
 */
 public List<Book> findByCategory(String cid) {
 try {
 String sql = "select * from book where cid=? and del=false";
 return qr.query(sql, new BeanListHandler<Book>(Book.class), cid);
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }

 /**
 * 加载方法
 * @param bid
 * @return
 */
 public Book findByBid(String bid) {
 try {
 /*
 * 我们需要在Book对象中保存Category的信息
 */
 String sql = "select * from book where bid=?";
 Map<String,Object> map = qr.query(sql, new MapHandler(), bid);
 /*
 * 使用一个Map,映射出两个对象,再给这两个对象建立关系!
 */
 Category category = CommonUtils.toBean(map, Category.class);
 Book book = CommonUtils.toBean(map, Book.class);
 book.setCategory(category);
 return book;
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }

 /**
 * 查询指定分类下的图书本数
 * @param cid
 * @return
 */
 public int getCountByCid(String cid) {
 try {
 String sql = "select count(*) from book where cid=?";
 Number cnt = (Number)qr.query(sql, new ScalarHandler(), cid);
 return cnt.intValue();
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }

 /**
 * 添加图书
 * @param book
 */
 public void add(Book book) {
 try {
 String sql = "insert into book values(?,?,?,?,?,?)";
 Object[] params = {book.getBid(), book.getBname(), book.getPrice(),
  book.getAuthor(), book.getImage(), book.getCategory().getCid()};
 qr.update(sql, params);
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }

 /**
 * 删除图书
 * @param bid
 */
 public void delete(String bid) {
 try {
 String sql = "update book set del=true where bid=?";
 qr.update(sql, bid);
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }

 public void edit(Book book) {
 try {
 String sql = "update book set bname=?, price=?,author=?, image=?, cid=? where bid=?";
 Object[] params = {book.getBname(), book.getPrice(),
  book.getAuthor(), book.getImage(), 
  book.getCategory().getCid(), book.getBid()};
 qr.update(sql, params);
 } catch(SQLException e) {
 throw new RuntimeException(e);
 }
 }
}

BookService

public class BookService {
 private BookDao bookDao = new BookDao();

 /**
 * 查询所有图书
 * @return
 */
 public List<Book> findAll() {
 return bookDao.findAll();
 }

 /**
 * 按分类查询图书
 * @param cid
 * @return
 */
 public List<Book> findByCategory(String cid) {
 return bookDao.findByCategory(cid);
 }

 public Book load(String bid) {
 return bookDao.findByBid(bid);
 }

 /**
 *  添加图书
 * @param book
 */
 public void add(Book book) {
 bookDao.add(book);
 }

 public void delete(String bid) {
 bookDao.delete(bid);
 }

 public void edit(Book book) {
 bookDao.edit(book);
 }
}

BookServlet

public class BookServlet extends BaseServlet {
 private BookService bookService = new BookService();

 public String load(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 /*
 * 1. 得到参数bid
 * 2. 查询得到Book
 * 3. 保存,转发到desc.jsp
 */
 request.setAttribute("book", bookService.load(request.getParameter("bid")));
 return "f:/jsps/book/desc.jsp";
 }

 /**
 * 查询所有图书
 * @param request
 * @param response
 * @return
 * @throws ServletException
 * @throws IOException
 */
 public String findAll(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 request.setAttribute("bookList", bookService.findAll());
 return "f:/jsps/book/list.jsp";
 }

 /**
 * 按分类查询
 * @param request
 * @param response
 * @return
 * @throws ServletException
 * @throws IOException
 */
 public String findByCategory(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 String cid = request.getParameter("cid");
 request.setAttribute("bookList", bookService.findByCategory(cid));
 return "f:/jsps/book/list.jsp";
 }
}

2、查询所有图书

流程:left.jsp(全部分类) -> BookServlet#findAll() -> /jsps/book/list.jsp

3、按分类查询图书

流程:left.jsp -> BookServlet#findByCategory() -> list.jsp

4、查询详细信息(加载)

流程:list.jsp(点击某一本书) -> BookServlet#load() -> desc.jsp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多