当前位置:   article > 正文

案例23 图书管理系统的设计与实现_图书管理系统设计

图书管理系统设计

一、案例目的

基于Spring Boot+MyBatis+MySQL完成图书管理系统的设计与实现,本案例完成两个实体的维护和实体间的关系,两个实体分别为学生对象和图书对象,实体间的关系是学生借阅图书。

二、需求分析

2.1 系统角色

本系统包含图书管理员和学生两个角色,图书管理员可以维护学生信息、维护图书信息、查询借阅信息,学生可以查询图书、借阅图书、归还图书、查询借阅记录。

2.2 该系统功能层次图如下:

2.3 管理员模块功能

维护学生信息,可以对学生信息进行新增、修改、删除操作。

维护图书信息,可以对图书信息进行新增、修改、下架操作。

查询借阅信息,可以按条件对图书借阅情况进行查询,可以查询已借阅图书信息和未归还图书信息。

2.4 学生模块功能

查询图书,学生可以按条件查询图书相关信息。

借阅图书,学生可以借阅图书。

归还图书,学生对图书进行归还操作。

查询借阅记录,学生对自己借阅的图书记录进行查询。

三、数据库设计

学生表:学生编号、姓名、年龄、性别、出生日期、身份证号、电话号码。

图书表:图书编号、图书名称、图书类别、出版社、作者、图书库存、图书状态(0:正常,1:已下架)。

借阅记录表:借阅记录ID、学生编号、图书编号、借阅时间、归还状态、归还时间。

3.1 创建学生表

  1. create table t_student (
  2. id varchar(32) ,
  3. name varchar(255),
  4. age int,
  5. sex varchar(2),
  6. birthday varchar(20),
  7. idCard varchar(20),
  8. phone varchar(20)
  9. );

3.2 创建图书表

  1. create table t_book(
  2. id varchar(32),
  3. name varchar(50),
  4. category varchar(32),
  5. press varchar(50),
  6. author varchar(50),
  7. num int,
  8. state varchar(2) default '0' comment '图书状态(0正常,1已下架)'
  9. );

3.3 创建借阅记录表

  1. create table t_borrow(
  2. id varchar(32),
  3. sid varchar(32),
  4. bid varchar(32),
  5. borrow_time varchar(32),
  6. borrow_state varchar(2) comment '借阅状态(0借阅中,1已归还)',
  7. back_time varchar(32)
  8. );

3.4 数据初始化

  1. insert into t_student
  2. values('S1111','zhangsan',20,'1','2000-01-01','370701200001011111','15800000001');
  3. insert into t_student
  4. values('S2222','lisi',20,'1','2000-01-01','370701200001011112','15800000002');

四、案例实现

4.1 创建Spring Boot项目

创建Spring Boot项目,项目名称为springboot-book02。

pom文件如下所示:

  1. <dependencies>
  2. <!--spring boot web-->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <!--mybatis-->
  8. <dependency>
  9. <groupId>org.mybatis.spring.boot</groupId>
  10. <artifactId>mybatis-spring-boot-starter</artifactId>
  11. <version>2.3.0</version>
  12. </dependency>
  13. <!--mysql-->
  14. <dependency>
  15. <groupId>com.mysql</groupId>
  16. <artifactId>mysql-connector-j</artifactId>
  17. <scope>runtime</scope>
  18. </dependency>
  19. <!--lombok-->
  20. <dependency>
  21. <groupId>org.projectlombok</groupId>
  22. <artifactId>lombok</artifactId>
  23. <optional>true</optional>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-test</artifactId>
  28. <scope>test</scope>
  29. </dependency>
  30. </dependencies>

4.2 基本配置

  • 4.2.1 创建配置文件

resources目录下创建application.yml。

  1. # 配置端口号
  2. server:
  3. port: 8090
  4. # 配置数据源
  5. spring:
  6. datasource:
  7. driver-class-name: com.mysql.cj.jdbc.Driver
  8. url: jdbc:mysql://localhost:3306/book
  9. username: root
  10. password: root
  11. # 配置MyBatis
  12. mybatis:
  13. mapper-locations: classpath*:mapper/**/*Mapper.xml
  14. type-aliases-package: com.wfit
  • 4.2.2 创建Constants常量类

com.wfit.boot.commons目录下创建Constants.java。

  1. public class Constants {
  2. // 默认成功码
  3. public static final int SUCCESS_CODE = 200;
  4. public static final String SUCCESS_MSG = "操作成功";
  5. // 默认失败码
  6. public static final int ERROR_CODE = 500;
  7. public static final String ERROR_MSG = "系统异常";
  8. // 图书状态(0:正常,1:已下架)
  9. public static final String BOOK_STATE_NORMAL = "0";
  10. public static final String BOOK_STATE_REMOVED = "1";
  11. // 归还状态(0:借阅状态,1:归还状态)
  12. public static final String BORROW_STATE_BORROW = "0";
  13. public static final String BORROW_STATE_BACK = "1";
  14. }
  • 4.2.3 创建Result类

com.wfit.boot.commons目录下创建Result.java。

  1. @Data
  2. @NoArgsConstructor
  3. @AllArgsConstructor
  4. public class Result<T> {
  5. //响应码
  6. private int code;
  7. //响应消息
  8. private String msg;
  9. //响应结果
  10. private T data;
  11. public static <T> Result<T> success(T data){
  12. return new Result<>(Constants.SUCCESS_CODE, Constants.SUCCESS_MSG,data);
  13. }
  14. public static <T> Result<T> error(T data){
  15. return new Result<>(Constants.ERROR_CODE, Constants.ERROR_MSG,data);
  16. }
  17. }
  • 4.2.4 创建DateTimeUtil类

com.wfit.boot.commons目录下创建DateTimeUtil.java。

  1. public class DateTimeUtil {
  2. public static String now(){
  3. LocalDateTime dateTime = LocalDateTime.now();
  4. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  5. return dateTime.format(formatter);
  6. }
  7. }
  • 4.2.5 创建UuidUtil类

com.wfit.boot.commons目录下创建UuidUtil.java。

  1. public class UuidUtil {
  2. public static String getUUID(){
  3. String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
  4. return uuid;
  5. }
  6. }

4.3 Student模块

  • 4.3.1 创建Student实体类

com.wfit.boot.pojo目录下创建Student.java。

  1. @Data
  2. public class Student implements Serializable {
  3. private String id; //学生学号
  4. private String name;
  5. private int age;
  6. private String sex;
  7. private String birthday;
  8. private String idCard;
  9. private String phone;
  10. }
  • 4.3.2 创建StudentController类

com.wfit.boot.controller目录下创建StudentController.java。

  1. /**
  2. * 维护学生信息
  3. */
  4. @RestController
  5. @RequestMapping("/student")
  6. public class StudentController {
  7. @Autowired
  8. private StudentService studentService;
  9. /**
  10. * 新增学生信息
  11. */
  12. @PostMapping("/add")
  13. public Result addStudent(@RequestBody Student student){
  14. studentService.saveStudent(student);
  15. return Result.success("新增学生成功," + student);
  16. }
  17. /**
  18. * 修改学生信息
  19. */
  20. @PostMapping("/update")
  21. public Result updateStudent(@RequestBody Student student){
  22. studentService.updateStudent(student);
  23. return Result.success("修改成功," + student);
  24. }
  25. /**
  26. * 删除学生信息
  27. */
  28. @GetMapping("/del")
  29. public Result delStudent(String id){
  30. studentService.delStudent(id);
  31. return Result.success("删除学生成功," + id);
  32. }
  33. /**
  34. * 查询学生信息
  35. */
  36. @GetMapping("/query")
  37. public Result queryStudent(){
  38. List<Student> studentList = studentService.queryStudent();
  39. return Result.success(studentList);
  40. }
  41. }
  • 4.3.3 创建StudentService接口

com.wfit.boot.service目录下创建StudentService.java。

  1. public interface StudentService {
  2. public void saveStudent(Student student);
  3. public void updateStudent(Student student);
  4. public void delStudent(String id);
  5. public List<Student> queryStudent();
  6. }
  • 4.3.4 创建StudentServiceImpl类

com.wfit.boot.service.impl目录下创建StudentServiceImpl.java。

  1. @Service
  2. public class StudentServiceImpl implements StudentService {
  3. @Resource
  4. private StudentMapper studentMapper;
  5. @Override
  6. public void saveStudent(Student student) {
  7. studentMapper.saveStudent(student);
  8. }
  9. @Override
  10. public void updateStudent(Student student) {
  11. studentMapper.updateStudent(student);
  12. }
  13. @Override
  14. public void delStudent(String id) {
  15. studentMapper.delStudent(id);
  16. }
  17. @Override
  18. public List<Student> queryStudent() {
  19. return studentMapper.queryStudent();
  20. }
  21. }
  • 4.3.5 创建StudentMapper接口

com.wfit.boot.mapper目录下创建StudentMapper.java。

  1. @Mapper
  2. public interface StudentMapper {
  3. public void saveStudent(Student student);
  4. public void updateStudent(Student student);
  5. public void delStudent(String id);
  6. public List<Student> queryStudent();
  7. }
  • 4.3.6 创建StudentMapper.xml文件

resources.mapper目录下创建StudentMapper.xml。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.wfit.boot.mapper.StudentMapper">
  4. <!--新增学生信息-->
  5. <insert id="saveStudent" parameterType="com.wfit.boot.pojo.Student">
  6. insert into t_student values(
  7. #{id},
  8. #{name},
  9. #{age},
  10. #{sex},
  11. #{birthday},
  12. #{idCard},
  13. #{phone}
  14. )
  15. </insert>
  16. <!--修改学生信息-->
  17. <update id="updateStudent" parameterType="com.wfit.boot.pojo.Student">
  18. update t_student
  19. set name = #{name}, age = #{age}
  20. where id = #{id}
  21. </update>
  22. <!--删除学生信息-->
  23. <delete id="delStudent" parameterType="java.lang.String">
  24. delete from t_student where id = #{id}
  25. </delete>
  26. <!--查询学生信息-->
  27. <select id="queryStudent" resultType="com.wfit.boot.pojo.Student">
  28. select *
  29. from t_student
  30. </select>
  31. </mapper>

4.4 Book模块

  • 4.4.1 创建Book实体类

com.wfit.boot.pojo目录下创建Book.java。

  1. @Data
  2. public class Book implements Serializable {
  3. private String id; //图书ISBN
  4. private String name;
  5. private String category;
  6. private String press;
  7. private String author;
  8. private int num;
  9. private String state; //图书状态(0:正常,1:已下架)
  10. }
  • 4.4.2 创建BookController类

com.wfit.boot.controller目录下创建BookController.java。

  1. /**
  2. * 维护图书信息
  3. */
  4. @RestController
  5. @RequestMapping("/book")
  6. public class BookController {
  7. @Autowired
  8. private BookService bookService;
  9. /**
  10. * 新增图书信息
  11. */
  12. @PostMapping("/add")
  13. public Result addBook(@RequestBody Book book) {
  14. try{
  15. bookService.addBook(book);
  16. }catch (Exception e){
  17. return Result.error(e.getMessage());
  18. }
  19. return Result.success("新增图书成功," + book);
  20. }
  21. /**
  22. * 修改图书信息
  23. */
  24. @PostMapping("/update")
  25. public Result updateBook(@RequestBody Book book){
  26. try{
  27. bookService.updateBook(book);
  28. }catch (Exception e){
  29. return Result.error(e.getMessage());
  30. }
  31. return Result.success("修改图书成功," + book);
  32. }
  33. /**
  34. * 下架图书信息
  35. */
  36. @GetMapping("/remove")
  37. public Result removeBook(String bookId){
  38. try{
  39. bookService.removeBook(bookId);
  40. }catch (Exception e){
  41. return Result.error(e.getMessage());
  42. }
  43. return Result.success("下架图书成功," + bookId);
  44. }
  45. /**
  46. * 查询图书信息
  47. */
  48. @PostMapping("/query")
  49. public Result queryBook(@RequestBody Book book) {
  50. List<Book> bookList;
  51. try{
  52. bookList = bookService.queryBook(book);
  53. }catch (Exception e){
  54. return Result.error(e.getMessage());
  55. }
  56. return Result.success(bookList);
  57. }
  58. }
  • 4.4.3 创建BookService接口

com.wfit.boot.service目录下创建BookService.java。

  1. public interface BookService {
  2. public void addBook(Book book) throws Exception;
  3. public void updateBook(Book book) throws Exception;
  4. public void removeBook(String id) throws Exception;
  5. public List<Book> queryBook(Book book) throws Exception;
  6. }
  • 4.4.4 创建BookServiceImpl类

com.wfit.boot.service.impl目录下创建BookServiceImpl.java。

  1. @Service
  2. public class BookServiceImpl implements BookService {
  3. @Resource
  4. private BookMapper bookMapper;
  5. @Resource
  6. private BorrowMapper borrowMapper;
  7. /**
  8. * 新增图书
  9. * @param book
  10. */
  11. @Override
  12. public void addBook(Book book) throws Exception{
  13. //查询图书是否已存在
  14. int num = bookMapper.queryBookNum(book.getId());
  15. if(num >= 0){ //如果已存在则更新图书数量
  16. bookMapper.updateBookNum(book.getId(),book.getNum());
  17. }else { //否则,新增图书信息
  18. book.setState(Constants.BOOK_STATE_NORMAL);
  19. bookMapper.saveBook(book);
  20. }
  21. }
  22. /**
  23. * 修改图书
  24. * @param book
  25. */
  26. @Override
  27. public void updateBook(Book book) throws Exception{
  28. bookMapper.updateBook(book);
  29. }
  30. /**
  31. * 下架图书
  32. * @param bookId
  33. */
  34. @Override
  35. public void removeBook(String bookId) throws Exception{
  36. //下架图书校验是否有正在借阅中的图书
  37. int num = borrowMapper.queryBorrowNum(null,bookId);
  38. if(num > 0){
  39. throw new Exception("尚有未归还图书,不允许下架操作!");
  40. }else{ //执行下架操作
  41. bookMapper.removeBook(bookId);
  42. }
  43. }
  44. /**
  45. * 查询图书信息
  46. * @param book
  47. * @return
  48. * @throws Exception
  49. */
  50. @Override
  51. public List<Book> queryBook(Book book) throws Exception {
  52. return bookMapper.queryBook(book);
  53. }
  54. }
  • 4.4.5 创建BookMapper接口

com.wfit.boot.mapper目录下创建BookMapper.java。

  1. @Mapper
  2. public interface BookMapper {
  3. /**
  4. * 查询图书数量
  5. * @param id
  6. * @return
  7. */
  8. public int queryBookNum(String id);
  9. /**
  10. * 新增图书
  11. * @param book
  12. */
  13. public void saveBook(Book book);
  14. /**
  15. * 更新图书库存
  16. * @param id
  17. * @param num
  18. */
  19. public void updateBookNum(@Param("id") String id,@Param("num") int num);
  20. /**
  21. * 修改图书
  22. * @param book
  23. */
  24. public void updateBook(Book book);
  25. /**
  26. * 下架图书
  27. * @param id
  28. */
  29. public void removeBook(String id);
  30. /**
  31. * 查询图书信息
  32. * @param book
  33. * @return
  34. */
  35. public List<Book> queryBook(Book book);
  36. }
  • 4.4.6 创建BookMapper.xml文件

resources.mapper目录下创建BookMapper.xml。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.wfit.boot.mapper.BookMapper">
  4. <!--查询图书库存-->
  5. <select id="queryBookNum" parameterType="java.lang.String" resultType="java.lang.Integer">
  6. select if(count(*) = 0 , -1 , sum(num)) num
  7. from t_book
  8. where id = #{id}
  9. and state = '0'
  10. </select>
  11. <!--新增图书信息-->
  12. <insert id="saveBook" parameterType="com.wfit.boot.pojo.Book">
  13. insert into t_book values(
  14. #{id},
  15. #{name},
  16. #{category},
  17. #{author},
  18. #{press},
  19. #{num},
  20. #{state}
  21. )
  22. </insert>
  23. <!--更新图书库存-->
  24. <update id="updateBookNum">
  25. update t_book
  26. set num = num + #{num}
  27. where id = #{id}
  28. and state = '0'
  29. </update>
  30. <!--修改图书信息-->
  31. <update id="updateBook" parameterType="com.wfit.boot.pojo.Book">
  32. update t_book
  33. <set>
  34. <if test="name != null and name != ''">
  35. name = #{name},
  36. </if>
  37. <if test="category != null and category != ''">
  38. category = #{category},
  39. </if>
  40. <if test="press != null and press != ''">
  41. press = #{press},
  42. </if>
  43. <if test="author != null and author != ''">
  44. author = #{author},
  45. </if>
  46. <if test="num != null">
  47. num = #{num},
  48. </if>
  49. </set>
  50. where id = #{id}
  51. and state = '0'
  52. </update>
  53. <!--下架图书-->
  54. <update id="removeBook" parameterType="java.lang.String">
  55. update t_book
  56. set state = '1',num = 0
  57. where id = #{id}
  58. and state = '0'
  59. </update>
  60. <!--查询图书信息-->
  61. <select id="queryBook" parameterType="com.wfit.boot.pojo.Book"
  62. resultType="com.wfit.boot.pojo.Book">
  63. select *
  64. from t_book
  65. <where>
  66. state = '0'
  67. <if test="id != null and id != ''">
  68. and id like concat('%',#{id},'%')
  69. </if>
  70. <if test="name != null and name != ''">
  71. and name like concat('%',#{name},'%')
  72. </if>
  73. <if test="author != null and author != ''">
  74. and author like concat('%',#{author},'%')
  75. </if>
  76. <if test="press != null and press != ''">
  77. and press like concat('%',#{press},'%')
  78. </if>
  79. </where>
  80. </select>
  81. </mapper>

4.5 Borrow模块

  • 4.5.1 创建Borrow实体类

com.wfit.boot.pojo目录下创建Borrow.java。

  1. @Data
  2. public class Borrow implements Serializable {
  3. private String id; //借阅记录ID
  4. private String studentId; //学生学号
  5. private String bookId; //图书ISBN
  6. private String borrowTime; //借阅时间
  7. private String borrowState; //借阅状态(0借阅中,1已归还)
  8. private String backTime; //归还时间
  9. //借阅图书详细信息
  10. private String bookName; //图书名称
  11. //学生详细信息
  12. private String studentName; //学生姓名
  13. }
  • 4.5.2 创建BorrowController类

com.wfit.boot.controller目录下创建BorrowController.java。

  1. /**
  2. * 借阅图书
  3. */
  4. @RestController
  5. @RequestMapping("/borrow")
  6. public class BorrowController {
  7. @Autowired
  8. private BorrowService borrowService;
  9. /**
  10. * 借阅图书
  11. */
  12. @PostMapping("/borrow")
  13. public Result borrowBook(@RequestBody Borrow borrow){
  14. try {
  15. borrowService.borrowBook(borrow);
  16. }catch (Exception e){
  17. return Result.error(e.getMessage());
  18. }
  19. return Result.success("借阅图书成功," + borrow);
  20. }
  21. /**
  22. * 归还图书
  23. */
  24. @PostMapping("/back")
  25. public Result backBook(@RequestBody Borrow borrow){
  26. try {
  27. borrowService.backBook(borrow);
  28. }catch (Exception e){
  29. return Result.error(e.getMessage());
  30. }
  31. return Result.success("归还图书成功," + borrow);
  32. }
  33. /**
  34. * 查询借阅记录
  35. * @param borrow
  36. * @return
  37. */
  38. @PostMapping("/query")
  39. public Result queryBorrow(@RequestBody Borrow borrow){
  40. List<Borrow> borrowList;
  41. try {
  42. borrowList = borrowService.queryBorrowInfo(borrow);
  43. }catch (Exception e){
  44. return Result.error(e.getMessage());
  45. }
  46. return Result.success(borrowList);
  47. }
  48. }
  • 4.5.3 创建BorrowService接口

com.wfit.boot.service目录下创建BorrowService.java。

  1. public interface BorrowService {
  2. public void borrowBook(Borrow borrow) throws Exception;
  3. public void backBook(Borrow borrow) throws Exception;
  4. public List<Borrow> queryBorrowInfo(Borrow borrow) throws Exception;
  5. }
  • 4.5.4 创建BorrowServiceImpl类

com.wfit.boot.service.impl目录下创建BorrowServiceImpl.java。

  1. @Service
  2. public class BorrowServiceImpl implements BorrowService {
  3. @Resource
  4. private BookMapper bookMapper;
  5. @Resource
  6. private BorrowMapper borrowMapper;
  7. /**
  8. * 借阅图书
  9. * @param borrow
  10. * @throws Exception
  11. */
  12. @Override
  13. public void borrowBook(Borrow borrow) throws Exception{
  14. //查询图书是否存在以及是否库存充足
  15. int num = bookMapper.queryBookNum(borrow.getBookId());
  16. if(num > 0){ //如果图书存在
  17. //借阅图书,库存数量更新 -1
  18. bookMapper.updateBookNum(borrow.getBookId(),-1);
  19. //新增借阅记录
  20. borrow.setId(UuidUtil.getUUID());
  21. borrow.setBorrowTime(DateTimeUtil.now());
  22. borrow.setBorrowState(Constants.BORROW_STATE_BORROW);
  23. borrowMapper.borrowBook(borrow);
  24. }else { //否则,返回图书不存在或数量不足不能借阅
  25. throw new Exception("图书不存在或数量不足!");
  26. }
  27. }
  28. /**
  29. * 归还图书
  30. * @param borrow
  31. * @throws Exception
  32. */
  33. @Override
  34. public void backBook(Borrow borrow) throws Exception {
  35. //查询此学生是否有借阅图书
  36. int num = borrowMapper.queryBorrowNum(borrow.getStudentId(),borrow.getBookId());
  37. if(num <= 0){
  38. throw new Exception("不存在未归还图书信息!");
  39. }else{ //执行归还图书操作
  40. //归还图书,库存数量更新 +1
  41. bookMapper.updateBookNum(borrow.getBookId(),1);
  42. //修改借阅记录为归还状态
  43. borrow.setBorrowState(Constants.BORROW_STATE_BACK);
  44. borrow.setBackTime(DateTimeUtil.now());
  45. borrowMapper.backBook(borrow);
  46. }
  47. }
  48. /**
  49. * 查询借阅记录
  50. * @param borrow
  51. * @throws Exception
  52. */
  53. @Override
  54. public List<Borrow> queryBorrowInfo(Borrow borrow) throws Exception {
  55. return borrowMapper.queryBorrowInfo(borrow);
  56. }
  57. }
  • 4.5.5 创建BorrowMapper接口

com.wfit.boot.mapper目录下创建BorrowMapper.java。

  1. @Mapper
  2. public interface BorrowMapper {
  3. public void borrowBook(Borrow borrow);
  4. public void backBook(Borrow borrow);
  5. public int queryBorrowNum(@Param("studentId") String studentId,@Param("bookId") String bookId);
  6. public List<Borrow> queryBorrowInfo(Borrow borrow);
  7. }
  • 4.5.6 创建BorrowMapper.xml文件

resources.mapper目录下创建BorrowMapper.xml。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.wfit.boot.mapper.BorrowMapper">
  4. <!--借阅记录信息-->
  5. <resultMap id="BorrowMap" type="com.wfit.boot.pojo.Borrow">
  6. <id column="id" property="id"/>
  7. <result column="sid" property="studentId"/>
  8. <result column="bid" property="bookId"/>
  9. <result column="sname" property="studentName"/>
  10. <result column="bname" property="bookName"/>
  11. <result column="borrow_time" property="borrowTime"/>
  12. <result column="borrow_state" property="borrowState"/>
  13. <result column="back_time" property="backTime"/>
  14. </resultMap>
  15. <!--查询借阅图书数量-->
  16. <select id="queryBorrowNum" resultType="java.lang.Integer">
  17. select count(*) num
  18. from t_borrow
  19. where borrow_state = '0'
  20. <if test="studentId != null and studentId !=''">
  21. and sid = #{studentId}
  22. </if>
  23. <if test="bookId != null and bookId !=''">
  24. and bid = #{bookId}
  25. </if>
  26. </select>
  27. <!--新增借阅图书记录-->
  28. <insert id="borrowBook" parameterType="com.wfit.boot.pojo.Borrow">
  29. insert into t_borrow(id,sid,bid,borrow_time,borrow_state) values(
  30. #{id},
  31. #{studentId},
  32. #{bookId},
  33. #{borrowTime},
  34. #{borrowState}
  35. )
  36. </insert>
  37. <!--修改借阅记录为归还状态-->
  38. <update id="backBook" parameterType="com.wfit.boot.pojo.Borrow">
  39. update t_borrow
  40. set borrow_state = #{borrowState}, back_time = #{backTime}
  41. where sid = #{studentId}
  42. and bid = #{bookId}
  43. </update>
  44. <!--查询借阅记录信息-->
  45. <select id="queryBorrowInfo" parameterType="com.wfit.boot.pojo.Borrow" resultMap="BorrowMap">
  46. select t.id,
  47. t.sid,
  48. t.bid,
  49. b.name bname,
  50. s.name sname,
  51. t.borrow_time,
  52. t.borrow_state,
  53. t.back_time
  54. from t_borrow t,t_book b,t_student s
  55. where t.bid = b.id
  56. and t.sid = s.id
  57. <if test="studentId != null and studentId !=''">
  58. and t.sid = #{studentId}
  59. </if>
  60. </select>
  61. </mapper>

五、案例测试

5.1 测试新增图书信息

5.2 测试修改图书信息

5.3 测试下架图书信息

5.4 测试查询图书信息

5.5 测试借阅图书

5.6 测试归还图书

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/802047
推荐阅读
相关标签
  

闽ICP备14008679号