图书管理系统【部署开发环境、解决分类、图书、前台页面模块】三

后台页面的查看分类


  • 在超链接上,绑定处理请求的Servlet

else if (method.equals("look")) {


            List<Category> list = service.getAllCategory();

            request.setAttribute("list", list);

            request.getRequestDispatcher("/background/lookCategory.jsp").forward(request, response);


        }

  • 显示分类页面的JSP

<c:if test="${empty(list)}">


    暂时还没有分类数据哦,请你添加把

</c:if>

<c:if test="${!empty(list)}">


    <table border="1px">

        <tr>

            <td>分类名字</td>

            <td>分类描述</td>

            <td>操作</td>

        </tr>


    <c:forEach items="${list}" var="category">


        <tr>

            <td>${category.name}</td>

            <td>${category.description}</td>

            <td>

                <a href="#">删除</a>

                <a href="#">修改</a>

            </td>

        </tr>



    </c:forEach>


    </table>

</c:if>

  • 效果:

图书管理系统【部署开发环境、解决分类、图书、前台页面模块】三


图书模块


分析


在设计图书管理的时候,我们应该想到:图书和分类是有关系的。一个分类可以对应多本图书。

为什么要这样设计?这样更加人性化,用户在购买书籍的时候,用户能够查看相关分类后的图书,而不是全部图书都显示给用户,让用户一个一个去找。


设计实体


private String id;

    private String name;

    private String author;

    private String description;

    private double price;


    //记住图片的名称

    private String image;


    //记住分类的id

    private String category_id;


    //各种setter和getter


设计数据库表


CREATE TABLE book (

  id          VARCHAR(40) PRIMARY KEY,

  name        VARCHAR(10) NOT NULL UNIQUE,

  description VARCHAR(255),

  author      VARCHAR(10),

  price       FLOAT,

  image       VARCHAR(100),

  category_id VARCHAR(40),

  CONSTRAINT category_id_FK FOREIGN KEY (category_id) REFERENCES category (id)


);


编写DAO


/**

* 图书模块

* 1:添加图书

* 2:查看图书

* 3:查找图书的分页数据【图书一般来说有很多,所以要分页】

*/

public class BookDaoImpl {


    public void addBook(Book book) {


        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());


        String sql = "INSERT INTO book (id,name,description,author,price,image,category_id) VALUES(?,?,?,?,?,?,?)";

        try {

            queryRunner.update(sql, new Object[]{book.getId(), book.getName(), book.getDescription(), book.getAuthor(), book.getPrice(),book.getImage(), book.getCategory_id()});


        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }


    public Book findBook(String id) {


        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());


        String sql = "SELECT * FROM book WHERE id=?";


        try {

            return (Book) queryRunner.query(sql, id, new BeanHandler(Book.class));

        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }


    /**得到图书的分页数据*/

    public List<Book> getPageData(int start, int end) {


        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());


        String sql = "SELECT * FROM book limit ?,?";


        try {

            return (List<Book>) queryRunner.query(sql, new BeanListHandler(Book.class), new Object[]{start, end});

        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }


    /**得到按照分类图书的分页数据*/

    public List<Book> getPageData(int start, int end,String category_id) {


        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());


        //WHERE字句在limit字句的前边,注意Object[]的参数位置!

        String sql = "SELECT * FROM book WHERE category_id=? limit ?,?";


        try {

            return (List<Book>) queryRunner.query(sql, new BeanListHandler(Book.class), new Object[]{ category_id,start, end});

        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }


    /**

    * 得到图书的总记录数

    */

    public int getTotalRecord() {

        QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());


        String sql = "SELECT COUNT(*) FROM book";


        try {

            return (int) queryRunner.query(sql, new ScalarHandler());

        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }


    /**

    * 得到分类后图书的总记录数

    * getCategoryTotalRecord

    */

    public long getCategoryTotalRecord(String category_id) {


        try {

            QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());


            String sql = "SELECT COUNT(*) FROM book WHERE category_id=?";

            return (long) queryRunner.query(sql, category_id, new ScalarHandler());


        } catch (SQLException e) {

            throw new RuntimeException(e);

        }

    }


}


测试DAO


public class BookDemo {


    BookDaoImpl bookDao = new BookDaoImpl();



    @Test


    public void add() {

        Book book = new Book();

        book.setId("5");

        book.setName("SQLServer");

        book.setAuthor("我也不知道");

        book.setImage("33333332432");

        book.setPrice(33.22);

        book.setDescription("这是一本好书");

        book.setCategory_id("2");


        bookDao.addBook(book);

    }


    @Test

    public void look() {


        List<Book> bookList = bookDao.getPageData(3, 3);


        for (Book book : bookList) {

            System.out.println(book.getName());

        }


        List<Book> books = bookDao.getPageData(0,2,"2");


        for (Book book : books) {

            System.out.println(book.getName());


        }

    }


    @Test

    public void find() {

        String id = "2";

        Book book = bookDao.findBook(id);


        System.out.println(book.getName());

    }



}


抽取成DAO接口


public interface BookDao {

    void addBook(Book book);


    Book findBook(String id);


    List<Book> getPageData(int start, int end);


    List<Book> getPageData(int start, int end, String category_id);


    long getTotalRecord();


    long getCategoryTotalRecord(String category_id);

}


编写Service层


/*添加图书*/

    public void addBook(Book book) {

        bookDao.addBook(book);


    }


    /*查找图书*/

    public Book findBook(String id) {

        return bookDao.findBook(id);

    }


    /*查找图书*/

    public Book findBook(String id) {

        return bookDao.findBook(id);

    }


    /*获取图书的分页数据*/

    public Page getPageData(String pageNum) {

        

        Page page=null;

        if (pageNum == null) {

            page = new Page(1, bookDao.getTotalRecord());

        } else {

            page = new Page(Integer.valueOf(pageNum), bookDao.getTotalRecord());

        }


        List<Book> books = bookDao.getPageData(page.getStartIndex(), page.getLinesize());

        page.setList(books);

        

        return page;


    }


    /*获取图书分类后的分页数据*/

    public Page getPageData(String currentPageCount,String category_id) {


        Page page=null;

        if (currentPageCount == null) {

            page = new Page(1, bookDao.getCategoryTotalRecord(category_id));

        } else {

            page = new Page(Integer.valueOf(currentPageCount), bookDao.getCategoryTotalRecord(category_id));

        }


        List<Book> books = bookDao.getPageData(page.getStartIndex(), page.getLinesize(), category_id);

        page.setList(books);

        return page;


    }

上一篇:Redis基础教程第7节 - Set


下一篇:联合双边滤波器(joint bilateral filter)【OpenCV】