飞道的博客

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

386人阅读  评论(0)

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

一、环境与配置

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

可参考之前文章:【可复用——笔记】SSM框架搭建(骨架)

二、项目编写

1、数据库部分

2、Java后端部分

(1)POJO实体类

实体类的属性要与数据库表中的字段一一对应,从而避免后期需要通过配置来手动使其一一对应的麻烦

(2)Dao层

1、编写Mapper接口,之后用Mapper.xml实现对应接口方法的SQL语句,从而生成Mapper接口的实现方法,与数据库进行信息交换

2、Mapper.xml,按Mapper类中的接口信息,来编写每个接口方法与数据库信息交互的对应SQL语句(通过标签的id属性对应接口方法名),注意 parameterType属性与resultType属性在不同标签中或是不同接口方法的实现中的应用

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<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型的变量,标识是否操作成功(当然也得看事务提交是否配置成功))

2、编写Service层接口的实现类,Service层要利用Dao层的实现类去调用方法与数据库进行信息交互

(4)Controller层

1、编写Controller层的控制类,Controller层首先将请求进行分类(当然,下图中用更加具体的注解,如@GetMapping,@PostMapping或@DeleteMapping等是更好的选择),一个请求对应一个方法,并利用Service层提供的接口方法的实现来进行对应操作


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

(1)书籍展示

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

如下是 index.jsp 页面

上图的蓝色超链接的编写如下,${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> ,也就是取出部署的应用程序名或者是当前的项目名称

从而再拼接/book/allBook请求,传给Controller层的控制器,实现list方法的调用,并调用Service层的服务,将所有数据的数据从数据库中返回

上图中的所有书籍的数据信息装入model中,使得前台jsp页面可以取出model中的属性,从而得到后台查询出的书籍信息

页面显示如下

(2)书籍查询

输入书籍名称,即可进行书籍查询操作

查无此书时,也会提示错误信息

右侧书籍查询表单的编写如下,

对应Controller层的响应方法如下,也是调用Service层的方法,并利用model进行键值的传递,注意最后是用请求转发的方式,而此处不能用重定向的方式,否则相当于又请求了一次/allBook,将全部书籍装入model的list属性对应值中,即方法没有发挥作用,这种情况要避免

(2)书籍更改

点击没本书后的更改操作

更改链接的编写如下,此处先用传统方式,而之后用 RESTful 风格再编写删除操作的请求

可跳转到 updateBook.jsp 页面,请求中也附带所更改书籍的id,可重新定义书籍的信息(id除外)

跳转到此 jsp 页面对应Controller层的请求如下,并将此书籍信息查出,加入model中,便于前台对书籍当前信息的显示,以及在此基础上的更改

刚跳转过来后,text框中之所以会显示当前书籍的信息,是因为已传递了文本框的默认value值

更改完信息后,提交表单

处理请求,并重定向到书籍展示页面,发起book/allBook请求,查询全部书籍,从而刷新为当前最新的书籍信息情况

(3)书籍添加

点击新增

此链接的编写如下

此请求处理中,只进行视图的跳转

跳转到新增书籍页

上图表单的请求如下

处理新增书籍的表单的请求,将书籍添加入数据库book表后,便重定向页面到书籍展示页

添加成功

(4)书籍删除

点击每个书籍行最后的删除标签即可在数据库中删除此书籍

此处,用 RESTful 风格传递请求

处理删除书籍的表单的请求,将书籍从数据库book表中删除后,便重定向页面到书籍展示页

删除成功


转载:https://blog.csdn.net/m0_46360532/article/details/115506122
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场