書城專案第五階段-圖書模塊
圖書管理模塊要做的事情如下:

========================================================================================================================
一、MVC 概念
MVC 全稱:Model 模型、 View 視圖、 Controller 控制器,
MVC 最早出現在 JavaEE 三層中的 Web 層,它可以有效的指導 Web 層的代碼如何有效分離,單獨作業,
View 視圖:只負責資料和界面的顯示,不接受任何與顯示資料無關的代碼,便于程式員和美工的分工合作——JSP/HTML,
Controller 控制器:只負責接收請求,呼叫業務層的代碼處理請求,然后派發頁面,是一個“調度者”的角色——Servlet,轉到某個頁面,或者是重定向到某個頁面,
Model 模型:將與業務邏輯相關的資料封裝為具體的 JavaBean 類,其中不摻雜任何與資料處理相關的代碼——JavaBean/domain/entity/pojo,
MVC 是一種思想
MVC 的理念是將軟體代碼拆分成為組件,單獨開發,組合使用(目的還是為了降低耦合度),

MVC 的作用還是為了降低耦合,讓代碼合理分層,方便后期升級和維護,
==========================================================================================================
二、圖書模塊
2.1 撰寫圖書模塊的資料庫表
根據圖書的資訊決定創建資料庫表所需要的欄位:

創建資料庫表t_book以及添加資料:
CREATE TABLE t_book ( `id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR (100), `price` DECIMAL (11, 2), `author` VARCHAR (100), `sales` INT, `stock` INT, `img_path` VARCHAR (200) ) ; ## 插入初始化測驗資料 INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'java 從入門到放棄', '國哥', 80, 9999, 9, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '資料結構與演算法', '嚴敏君', 78.5, 6, 13, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '怎樣拐跑別人的媳婦', '龍伍', 68, 99999, 52, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '木虛肉蓋飯', '小胖', 16, 1000, 50, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'C++編程思想', '剛哥', 45.5, 14, 95, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '蛋炒飯', '周星星', 9.9, 12, 53, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '賭神', '龍伍', 66.5, 125, 535, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'Java 編程思想', '陽哥', 99.5, 47, 36, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'JavaScript 從入門到精通', '婷姐', 9.9, 85, 95, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'cocos2d-x 游戲編程入門', '國哥', 49, 52, 62, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'C 語言程式設計', '譚浩強', 28, 52, 74, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'Lua 語言程式設計', '雷豐陽', 51.5, 48, 82, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '西游記', '羅貫中', 12, 19, 9999, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '水滸傳', '華仔', 33.05, 22, 88, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '作業系統原理', '劉優', 133.05, 122, 188, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '資料結構 java 版', '封大神', 173.15, 21, 81, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'UNIX 高級環境編程', '樂天', 99.15, 210, 810, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, 'javaScript 高級編程', '國哥', 69.15, 210, 810, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '大話設計模式', '國哥', 89.15, 20, 10, 'static/img/default.jpg' ) ; INSERT INTO t_book ( `id`, `name`, `author`, `price`, `sales`, `stock`, `img_path` ) VALUES ( NULL, '人月神話', '剛哥', 88.15, 20, 80, 'static/img/default.jpg' ) ; ## 查看表內容 SELECT id, NAME, author, price, sales, stock, img_path FROM t_book ;
效果如下:

2.2 撰寫圖書模塊的JavaBean
Book.java類:

注意:對于圖片的路徑,我們要求不能為空,


2.3 撰寫圖書模塊的Dao和測驗Dao
BookDao介面:
public interface BookDao { /** * 添加一本書 * @param book * @return */ public int addBook(Book book); /** * 通過id洗掉一本書 * @param id * @return */ public int deleteBookById(Integer id); /** * 更新某一本書 * @param book * @return */ public int updateBook(Book book); /** * 通過id查詢某一本書 * @param id * @return */ public Book queryBookById(Integer id); /** * 查詢說有的圖書 * @return */ public List<Book> queryBooks(); }
介面實作類:BookDaoImpl.java:
public class BookDaoImpl extends BaseDao implements BookDao { @Override public int addBook(Book book) { String sql = "insert into t_book(`name`,`author`,`price`,`sales`,`stock`,`img_path`) values(?,?,?,?,?,?)"; return update(sql,book.getName(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgPath()); } @Override public int deleteBookById(Integer id) { String sql = "delete from t_book where id = ?"; return update(sql,id); } @Override public int updateBook(Book book) { String sql = "update t_book set `name`=?,`author`=?,`price`=?,`sales`=?,`stock`=?,`img_path`=? where id = ?"; return update(sql,book.getName(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgPath(),book.getId()); } @Override public Book queryBookById(Integer id) { String sql = "select `id`,`name`,`author`,`price`,`sales`,`stock`,`img_path` imgPath from t_book where id = ?"; return queryForOne(Book.class,sql,id); } @Override public List<Book> queryBooks() { String sql = "select `id`,`name`,`author`,`price`,`sales`,`stock`,`img_path` imgPath from t_book"; return queryForList(Book.class,sql); } }
測驗BookDaoTest:
public class BookDaoTest { private BookDao bookDao = new BookDaoImpl(); @Test public void addBook() { bookDao.addBook(new Book(null,"三國殺","老郭",new BigDecimal(43434),1188888,0,null)); } @Test public void deleteBookById() { bookDao.deleteBookById(21); } @Test public void updateBook() { bookDao.updateBook(new Book(21,"老郭說事","老郭",new BigDecimal(9999),1188888,0,null)); } @Test public void queryBookById() { System.out.println(bookDao.queryBookById(21)); } @Test public void queryBooks() { for (Book queryBook : bookDao.queryBooks()) { System.out.println(queryBook); } } }
2.4 撰寫圖書模塊的Service和測驗Service
BookService介面:
public interface BookService { public void addBook(Book book); public void deleteBookById(Integer id); public void updateBook(Book book); public Book queryBookById(Integer id); public List<Book> queryBooks(); }
BookServiceImpl實作類:
public class BookServiceImpl implements BookService { private BookDao bookDao = new BookDaoImpl(); @Override public void addBook(Book book) { bookDao.addBook(book); } @Override public void deleteBookById(Integer id) { bookDao.deleteBookById(id); } @Override public void updateBook(Book book) { bookDao.updateBook(book); } @Override public Book queryBookById(Integer id) { return bookDao.queryBookById(id); } @Override public List<Book> queryBooks() { return bookDao.queryBooks(); } }
BookServiceTest測驗:
public class BookServiceTest { private BookService bookService = new BookServiceImpl(); @Test public void addBook() { bookService.addBook(new Book(null,"西游記","4343",new BigDecimal(4444),4343433,7,null)); } @Test public void deleteBookById() { bookService.deleteBookById(22); } @Test public void updateBook() { bookService.updateBook(new Book(22,"水滸傳","444",new BigDecimal(4444),22,74545,null)); } @Test public void queryBookById() { System.out.println(bookService.queryBookById(22)); } @Test public void queryBooks() { for (Book queryBook : bookService.queryBooks()) { System.out.println(queryBook); } } }
2.5 撰寫圖書模塊的Web 層,和頁面聯調測驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/204501.html
標籤:Java
下一篇:資料合并combing
