【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目

前言:此项目是前段时间学习自视频https://www.bilibili.com/video/BV1RE41127rv
如今已过多日,为了再次回顾,便写下此文,与大家一起分享,此项目很有代表性,也是一个非常适合整合SSM的入门友好型项目

文章目录

  • 一、环境与配置
  • 二、项目编写
    • 1、数据库部分
    • 2、Java后端部分
      • (1)POJO实体类
      • (2)Dao层
      • (3)Service层
      • (4)Controller层
    • 3、JSP前台部分 + 各功能详解
      • (1)书籍展示
      • (2)书籍查询
      • (2)书籍更改
      • (3)书籍添加
      • (4)书籍删除

一、环境与配置

因环境配置相对繁琐,而且复用性也强,因此单独抽成了一篇文章

可参考之前文章:【可复用——笔记】SSM框架搭建(骨架)
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第1张图片
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第2张图片

二、项目编写

1、数据库部分

【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第3张图片

2、Java后端部分

(1)POJO实体类

实体类的属性要与数据库表中的字段一一对应,从而避免后期需要通过配置来手动使其一一对应的麻烦
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第4张图片

(2)Dao层

1、编写Mapper接口,之后用Mapper.xml实现对应接口方法的SQL语句,从而生成Mapper接口的实现方法,与数据库进行信息交换
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第5张图片
2、Mapper.xml,按Mapper类中的接口信息,来编写每个接口方法与数据库信息交互的对应SQL语句(通过标签的id属性对应接口方法名),注意 parameterType属性与resultType属性在不同标签中或是不同接口方法的实现中的应用



<mapper namespace="com.zlc.dao.BookMapper">

    <select id="queryBookById" resultType="book">
        SELECT bookId, bookName, bookCount, detail
        FROM book
        WHERE bookId = #{bookId}
    select>

    <select id="queryAllBook" resultType="book">
        SELECT bookId, bookName, bookCount, detail
        FROM book
    select>

    <insert id="addBook" parameterType="book">
        INSERT INTO book (bookName, bookCount, detail)
        VALUES (#{bookName}, #{bookCount}, #{detail})
    insert>

    <delete id="deleteBookById" parameterType="int">
        DELETE FROM book
        WHERE bookId = #{bookId}
    delete>

    <update id="updateBook" parameterType="book">
        UPDATE book
        SET bookName = #{bookName}, bookCount = #{bookCount}, detail = #{detail}
        WHERE bookId = #{bookId}
    update>

    <select id="queryBookByName" parameterType="string" resultType="book">
        SELECT bookName, bookCount, detail
        FROM book
        WHERE bookName = #{bookName}
    select>

mapper>

(3)Service层

1、编写Service层接口,Service层位于MVC三层架构的中间部分,向下利用Dao层提供的接口实现方法,向上又为Controller层提供服务

(注:下图中,增加,删除,更新一本书的返回值也可以是boolean型的变量,标识是否操作成功(当然也得看事务提交是否配置成功))
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第6张图片
2、编写Service层接口的实现类,Service层要利用Dao层的实现类去调用方法与数据库进行信息交互
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第7张图片

(4)Controller层

1、编写Controller层的控制类,Controller层首先将请求进行分类(当然,下图中用更加具体的注解,如@GetMapping,@PostMapping或@DeleteMapping等是更好的选择),一个请求对应一个方法,并利用Service层提供的接口方法的实现来进行对应操作
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第8张图片
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第9张图片
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第10张图片

3、JSP前台部分 + 各功能详解

(1)书籍展示

从启动 Tomcat 后的第一个页面介绍起

如下是 index.jsp 页面
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第11张图片
上图的蓝色超链接的编写如下,${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> ,也就是取出部署的应用程序名或者是当前的项目名称
在这里插入图片描述
从而再拼接/book/allBook请求,传给Controller层的控制器,实现list方法的调用,并调用Service层的服务,将所有数据的数据从数据库中返回
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第12张图片
上图中的所有书籍的数据信息装入model中,使得前台jsp页面可以取出model中的属性,从而得到后台查询出的书籍信息
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第13张图片

页面显示如下
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第14张图片

(2)书籍查询

输入书籍名称,即可进行书籍查询操作
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第15张图片
查无此书时,也会提示错误信息
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第16张图片

右侧书籍查询表单的编写如下,
在这里插入图片描述
对应Controller层的响应方法如下,也是调用Service层的方法,并利用model进行键值的传递,注意最后是用请求转发的方式,而此处不能用重定向的方式,否则相当于又请求了一次/allBook,将全部书籍装入model的list属性对应值中,即方法没有发挥作用,这种情况要避免
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第17张图片

(2)书籍更改

点击没本书后的更改操作
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第18张图片
更改链接的编写如下,此处先用传统方式,而之后用 RESTful 风格再编写删除操作的请求
在这里插入图片描述

可跳转到 updateBook.jsp 页面,请求中也附带所更改书籍的id,可重新定义书籍的信息(id除外)
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第19张图片
跳转到此 jsp 页面对应Controller层的请求如下,并将此书籍信息查出,加入model中,便于前台对书籍当前信息的显示,以及在此基础上的更改
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第20张图片

刚跳转过来后,text框中之所以会显示当前书籍的信息,是因为已传递了文本框的默认value值
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第21张图片
更改完信息后,提交表单
在这里插入图片描述
处理请求,并重定向到书籍展示页面,发起book/allBook请求,查询全部书籍,从而刷新为当前最新的书籍信息情况
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第22张图片

(3)书籍添加

点击新增
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第23张图片
此链接的编写如下
在这里插入图片描述
此请求处理中,只进行视图的跳转
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第24张图片
跳转到新增书籍页
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第25张图片

上图表单的请求如下
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第26张图片

处理新增书籍的表单的请求,将书籍添加入数据库book表后,便重定向页面到书籍展示页
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第27张图片
添加成功
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第28张图片

(4)书籍删除

点击每个书籍行最后的删除标签即可在数据库中删除此书籍
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第29张图片
此处,用 RESTful 风格传递请求
在这里插入图片描述
处理删除书籍的表单的请求,将书籍从数据库book表中删除后,便重定向页面到书籍展示页
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第30张图片
删除成功
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第31张图片
【SSM整合:图书信息管理系统】Spring+SpringMVC+MyBatis简易CRUD小项目_第32张图片

你可能感兴趣的:(SSM框架,mybatis,spring,springmvc,java,ssm)