最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javaweb圖書商城設(shè)計之圖書模塊(4)

 更新時間:2016年11月11日 11:39:27   作者:Android-Dev  
這篇文章主要介紹了javaweb圖書商城設(shè)計之圖書模塊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文接著上一篇圖書商城分類模塊進行學(xué)習(xí),供大家參考,具體內(nèi)容如下

1、創(chuàng)建相關(guān)類

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,映射出兩個對象,再給這兩個對象建立關(guān)系!
 */
 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);
 }
 }

 /**
 * 查詢指定分類下的圖書本數(shù)
 * @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. 得到參數(shù)bid
 * 2. 查詢得到Book
 * 3. 保存,轉(zhuǎn)發(fā)到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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA2019.3配置Hibernate的詳細教程(未使用IDEA的自動化)

    IDEA2019.3配置Hibernate的詳細教程(未使用IDEA的自動化)

    這篇文章主要介紹了IDEA2019.3配置Hibernate的詳細教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • springSecurity實現(xiàn)簡單的登錄功能

    springSecurity實現(xiàn)簡單的登錄功能

    這篇文章主要為大家詳細介紹了springSecurity實現(xiàn)簡單的登錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • springboot lua檢查redis庫存的實現(xiàn)示例

    springboot lua檢查redis庫存的實現(xiàn)示例

    本文主要介紹了springboot lua檢查redis庫存的實現(xiàn)示例,為了優(yōu)化性能,通過Lua腳本實現(xiàn)對多個馬戲場次下的座位等席的庫存余量檢查,感興趣的可以了解一下
    2024-09-09
  • Mybatis多線程下如何使用Example詳解

    Mybatis多線程下如何使用Example詳解

    這篇文章主要給大家介紹了關(guān)于Mybatis多線程下如何使用Example的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 基于java中cas實現(xiàn)的探索

    基于java中cas實現(xiàn)的探索

    這篇文章主要介紹了java中cas實現(xiàn)的探索,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Cloud Ribbon客戶端詳細介紹

    Spring Cloud Ribbon客戶端詳細介紹

    Spring Cloud Ribbon 是一套基于 Netflix Ribbon 實現(xiàn)的客戶端負載均衡和服務(wù)調(diào)用工具。通過Spring Cloud的封裝,可以讓我們輕松地將面向服務(wù)的REST模版請求自動轉(zhuǎn)換成客戶端負載均衡的服務(wù)調(diào)用
    2022-09-09
  • java簡單實現(xiàn)多線程及線程池實例詳解

    java簡單實現(xiàn)多線程及線程池實例詳解

    這篇文章主要為大家詳細介紹了java簡單實現(xiàn)多線程,及java爬蟲使用線程池實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 詳解Java如何通過Socket實現(xiàn)查詢IP

    詳解Java如何通過Socket實現(xiàn)查詢IP

    在本文中,我們來學(xué)習(xí)下如何找到連接到服務(wù)器的客戶端計算機的IP地址。我們將創(chuàng)建一個簡單的客戶端-服務(wù)器場景,讓我們探索用于TCP/IP通信的java.net?API,感興趣的可以了解一下
    2022-10-10
  • Java實現(xiàn)的自定義迭代器功能示例

    Java實現(xiàn)的自定義迭代器功能示例

    這篇文章主要介紹了Java實現(xiàn)的自定義迭代器功能,結(jié)合具體實例形式分析了java簡單迭代器的實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • SpringBoot集成RabbitMQ和概念介紹

    SpringBoot集成RabbitMQ和概念介紹

    這篇文章主要介紹了SpringBoot集成RabbitMQ和概念介紹,RabbitMQ即一個消息隊列,主要是用來實現(xiàn)應(yīng)用程序的異步和解耦,同時也能起到消息緩沖,消息分發(fā)的作用。更多相關(guān)內(nèi)容需要的小伙伴可以參考一下下面文章內(nèi)容
    2022-05-05

最新評論

南岸区| 轮台县| 塘沽区| 监利县| 南投县| 荥经县| 黎平县| 读书| 仁化县| 呼图壁县| 棋牌| 洛川县| 北票市| 龙州县| 华亭县| 外汇| 延川县| 台湾省| 太谷县| 柳河县| 盱眙县| 于都县| 临清市| 寻乌县| 景谷| 宝兴县| 嵊泗县| 青田县| 苗栗市| 四会市| 无棣县| 乌什县| 新龙县| 凤凰县| 庄浪县| 桑植县| 福安市| 临沭县| 湟源县| 额敏县| 白山市|