> 文章列表 > 图书管理系统(考试样品)

图书管理系统(考试样品)

图书管理系统(考试样品)

一、执行下面的sql

CREATE DATABASE bms CHARACTER SET utf8mb4;USE bms;DROP TABLE IF EXISTS `tb_book`;CREATE TABLE `tb_book` (`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(20) NOT NULL,`desc` TEXT ,`type_id` INT DEFAULT NULL,PRIMARY KEY (`id`)
) ;
INSERT INTO `tb_book` VALUES (7,'gaodengshuxue','haoshu',3),(9,'测试数据','测试描述数据',2),(16,'测试数据increase','测试数据',3),(17,'测试数据increase','测试数据',4),(18,'xiyouji','bad',2),(19,'测试数据increase','测试数据',NULL),(27,'xiyouji2','bad',2),(28,'xiyouji2','bad',2),(29,'xiyouji2','bad',2);DROP TABLE IF EXISTS `tb_type`;CREATE TABLE `tb_type` (`id` INT NOT NULL AUTO_INCREMENT,`type` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)
);INSERT INTO `tb_type` VALUES (1,'计算机'),(2,'文学'),(3,'数学'),(4,'历史');

二、导入项目的基本结构

 

三、启动项目

四、浏览器输入http://localhost:8081/books

如果出现如下图片,那么你完成了基本操作。

五、删除某本书

1、删除的链接要怎么写?

<a th:href="@{|/delete/${book.id}|}">删除</a>

上面双竖线的作用:拼接字符串,不用自己手动拼接字符串。

2、处理删除请求的方法要怎么写?

    @GetMapping("/delete/{id}")public String deleteById(@PathVariable Integer id){int i=dao.deleteById(id);return "redirect:/books";}

 3、做删除操作要怎么写?

    @Delete("delete from tb_book where id=#{id}")int deleteById(Integer id);

六、编辑某本书

0、编辑页面要怎么写?在该页面上你要填充某本书的数据。

    <form th:action="@{/edit}" method="post">	<input type="hidden" name="id" th:value="${book.id}" /><ul><li>图书名称:<input type="text" name="name" th:value="${book.name}"></li><li>图书描述:<input type="text" name="desc" th:value="${book.desc}"></li><li>图书类型:<ul th:each="type:${types}"><li><input type="radio" name="typeId" th:value="${type.id}"th:text=${type.type}th:checked="${book.typeId==type.id}?'checked'"></li></ul></li><li><input type="submit" value="保存"></li></ul></form>

1、跳到编辑页面的链接要怎么写?

<a th:href="@{|/toEditPage/${book.id}|}">编辑</a>

2、处理跳到编辑页面的请求要怎么写?

    @GetMapping("/toEditPage/{id}")public String toEditPage(@PathVariable Integer id,Model model){Book book=dao.selectById(id);model.addAttribute("book", book);List<Type> types = typeDao.selectAll();model.addAttribute("types", types);return "book_edit";}

在BookMapper中增加根据id查询书的方法:

    @Select("select * from tb_book where id=#{id}")Book selectById(Integer id);

创建TypeMapper接口,增加查询所有类型的方法:

@Mapper
public interface TypeMapper {	@Select("select * from tb_type")List<Type> selectAll();
}

3、在你编辑完成后,点击保存,浏览器发送保存请求,那么服务端如何处理这个请求?

    @PostMapping("/edit")public String edit(Book book){int i=dao.update(book);    	return "redirect:/books";}

在BookMapper中添加更新方法:

    @Update("update tb_book set `name`=#{name},`desc`=#{desc},type_id=#{typeId} where id=#{id}")int update(Book book);

七、新增某本书

0、编写新增页面

<form th:action="@{/add}" method="post">图书名称:<input type="text" name="name" ><br/>图书描述:<input type="text" name="desc" ><br/>图书类型:<div th:each="type:${types}"><input type="radio" name="typeId" th:text=${type.type} th:value=${type.id}></div><input type="submit" value="保存">
</form>

1、写出跳到新增页面的链接

<a th:href="@{/toAddPage}">新增</a>

2、处理跳到新增页面的请求

    @GetMapping("/toAddPage")public String toAddPage(Model model){List<Type> types = typeDao.selectAll();model.addAttribute("types", types);    	return "book_add";    	}

3、填写书的信息完毕后,点击保存,如何处理添加请求?

    @PostMapping("/add")public String add(Book book){    	int i=dao.add(book);    	return "redirect:/books";    	}

在BookMapper中添加新增方法:

    @Insert("insert into tb_book(name,`desc`,type_id) values(#{name},#{desc},#{typeId})")int add(Book book);