书城项目第五阶段-图书模块1

简介: 书城项目第五阶段-图书模块1

书城项目

页面样式

后台管理



图书管理



添加图书



修改图书




第五阶段

1、MVC概念

MVC全称:Model模型、View视图、Controller 控制器。


MVC最早出现在JavaEE三层中的Web层,它可以有效的指导Web层的代码如何有效分离,单独工作。


View视图:只负责数据和界面的显示,不接受任何与显示数据无关的代码,便于程序员和美工的分工合作一一JSP/HTML。


Controller控制器:只负责接收请求,调用业务层的代码处理请求,然后派发页面,是一个“调度者”的角色-一Servlet。

转到某个页面。或者是重定向到某个页面。


Model模型:将与业务逻辑相关的数据封装为具体的JavaBean类,其中不掺杂任何与数据处理相关的代码一一JavaBean/domain/entity/pojo。

MVC是一种思想

MVC的理念是将软件代码拆分成为组件,单独开发,组合使用(目的还是为了降低耦合度) 。

MVC的作用还是为了降低耦合。让代码合理分层。方便后期升级和维护。

书城第五阶段

1、图书模块

1.1、编写图书模块的数据库表

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,'怎样拐跑别人的媳妇','龙伍', 68,99999,52 ,'static/img/default.jpg');
insert into t_book(id ,name,author,price,sales,stock,img_path)values(null,'C++编程思想','刚哥' , 68,99989,52,'static/img/default.jpg');



1.2、编写图书模块的JavaBean

Book pojo包下

package com.atguigu.pojo;
import java.math.BigDecimal;
public class Book {
    private Integer id;
    private String name;
    private String author;
    private BigDecimal price;
    private Integer sales;
    private Integer stock;
    private String imgPath="static/img/default.jpg";
    public Book() {
    }
    public Book(Integer id, String name, String author, BigDecimal price, Integer sales, Integer stock, String imgPath) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.price = price;
        this.sales = sales;
        this.stock = stock;
        //要求给定的图书封面图片路径不能为空
        if (imgPath!=null&& !"".equals(imgPath)){
            this.imgPath = imgPath;
        }
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public BigDecimal getPrice() {
        return price;
    }
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    public Integer getSales() {
        return sales;
    }
    public void setSales(Integer sales) {
        this.sales = sales;
    }
    public Integer getStock() {
        return stock;
    }
    public void setStock(Integer stock) {
        this.stock = stock;
    }
    public String getImgPath() {
        return imgPath;
    }
    public void setImgPath(String imgPath) {
        //要求给定的图书封面图片路径不能为空
        if (imgPath!=null&& !"".equals(imgPath)){
            this.imgPath = imgPath;
        }
    }
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", sales=" + sales +
                ", stock=" + stock +
                ", imgPath='" + imgPath + '\'' +
                '}';
    }
}

1.3、编写图书模块的Dao和测试Dao

BookDao dao包下

package com.atguigu.dao;
import com.atguigu.pojo.Book;
import java.util.List;
public interface BookDao {
    //Ctrl+Shift+T
    public int addBook(Book book);
    public int deleteBook(Integer id );
    public int updateBook(Book book);
    public Book queryBookById(Integer id);
    public List<Book> queryBooks();
}

BookDaoImpl dao/impl包下

package com.atguigu.dao.impl;
import com.atguigu.dao.BookDao;
import com.atguigu.pojo.Book;
import java.util.List;
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 deleteBook(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 test包下

package com.atguigu.test;
import com.atguigu.dao.BookDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.pojo.Book;
import org.junit.Test;
import java.math.BigDecimal;
public class BookDaoTest {
    private BookDao bookDao=new BookDaoImpl();
    @Test
    public void addBook() {
        bookDao.addBook(new Book(null,"我为什么这么帅!","191125",new BigDecimal(9999),1100000,0,null));
    }
    //最后测试
    @Test
    public void deleteBook() {
        bookDao.deleteBook(4);
    }
    @Test
    public void updateBook() {
        bookDao.updateBook(new Book(4,"我们都很帅!","191125",new BigDecimal(9999),1100000,0,null));
    }
    @Test
    public void queryBookById() {
        System.out.println(bookDao.queryBookById(4));
    }
    @Test
    public void queryBooks() {
        for (Book queryBook: bookDao.queryBooks()) {
            System.out.println(queryBook);
        }
    }
}

1.4、编写图书模块的Service和测试Service

BookService service包下

package com.atguigu.service;
import com.atguigu.pojo.Book;
import java.util.List;
public interface BookService {
    //Ctrl+Shift+T
    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 service/impl下

package com.atguigu.service.impl;
import com.atguigu.dao.BookDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.pojo.Book;
import com.atguigu.service.BookService;
import java.util.List;
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.deleteBook(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 test包下

package com.atguigu.test;
import com.atguigu.pojo.Book;
import com.atguigu.service.BookService;
import com.atguigu.service.impl.BookServiceImpl;
import org.junit.Test;
import java.math.BigDecimal;
import static org.junit.Assert.*;
public class BookServiceTest {
    private BookService bookService=new BookServiceImpl();
    @Test
    public void addBook() {
        bookService.addBook(new Book(null,"天下我有!","1125",new BigDecimal(999),10000,0,null));
    }
    //最后测试
    @Test
    public void deleteBookById() {
        bookService.deleteBookById(5);
    }
    @Test
    public void updateBook() {
        bookService.updateBook(new Book(5,"天下都有!","1125",new BigDecimal(999),10,9999,null));
    }
    @Test
    public void queryBookById() {
        System.out.println(bookService.queryBookById(5));
    }
    @Test
    public void queryBooks() {
        for (Book queryBook:bookService.queryBooks()) {
            System.out.println(queryBook);
        }
    }
}
相关文章
|
9月前
书城项目第五阶段-图书分页1
书城项目第五阶段-图书分页1
55 0
|
2天前
|
XML 移动开发 前端开发
基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug
基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug
|
6月前
|
开发框架 JavaScript 前端开发
基于SSM的高校工作量统计系统(教师教学业绩考核系统)(有报告)。Javaee项目,SSM项目。
基于SSM的高校工作量统计系统(教师教学业绩考核系统)(有报告)。Javaee项目,SSM项目。
|
9月前
书城项目第六、七阶段1
书城项目第六、七阶段1
26 0
|
9月前
|
数据库
书城项目第六、七阶段2
书城项目第六、七阶段2
31 1
|
9月前
|
前端开发
书城项目全部代码4
书城项目全部代码4
36 0
|
9月前
书城第七阶段补充
书城第七阶段补充
23 0
|
9月前
书城项目第五阶段-图书模块2
书城项目第五阶段-图书模块2
19 0
|
9月前
书城项目第五阶段-图书分页2
书城项目第五阶段-图书分页2
27 1
|
9月前
|
Java 应用服务中间件
书城项目第六阶段
书城项目第六阶段
29 0

热门文章

最新文章