> 文档中心 > 狂神SSM项目整合(含完整代码免费)

狂神SSM项目整合(含完整代码免费)

这几天看了BiliBili上的狂神的视频,跟着做,并且跑通了这个SSM小demo,故著文章以记之!

文章将会讲述一步一步实现了逻辑,最后会附上完整的源码

【狂神说Java】SSM框架最新整合教学IDEA版_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1RE41127rv?p=1

我们按照狂神讲课的思路来实现!

---------------------------------------目录---------------------------------------

环境配置

项目的骨架

运行示例图

SSM整合详细步骤

(1)创建数据库

(2)配置Maven地址

(3)导入pom.xml

(4)applicationContext.xml

(5)database.properties

(6)编写pojo的books实体类

(7)编写dao层(持久层)

BookMapper

BookMapper.xml

mybatis-config.xml

(8)spring-dao.xml

(9)业务层

BookService

BookServiceImpl

spring-service.xml

(10)web.xml

(11)spring-mvc.xml

(12)控制层

BookController

(13)前端页面

addBook.jsp

allBook.jsp

updateBook.jsp 

完整代码


环境配置

编译器:IDEA

MySQL:8.0(相较于5.7要配置一下时区!)

Tomcat:8.5

Maven:3.6.1

项目的骨架

运行示例图

SSM整合详细步骤

(1)创建数据库表

这里我就直接贴代码了,该代码是由Navicat根据我之前创建的SQL表导出的!

数据库名为:ssmbuild

数据库只有一张表:books

/* Navicat Premium Data Transfer Source Server  : MySQL Source Server Type    : MySQL Source Server Version : 80028 Source Host    : localhost:3306 Source Schema  : ssmbuild Target Server Type    : MySQL Target Server Version : 80028 File Encoding  : 65001 Date: 25/04/2022 18:09:20*/SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for books-- ----------------------------DROP TABLE IF EXISTS `books`;CREATE TABLE `books`  (  `bookID` int(0) NOT NULL AUTO_INCREMENT COMMENT '书id',  `bookName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '书名',  `bookCounts` int(0) NOT NULL COMMENT '数量',  `detail` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述',  INDEX `bookID`(`bookID`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of books-- ----------------------------INSERT INTO `books` VALUES (1, 'Java', 1, '从入门到放弃');INSERT INTO `books` VALUES (2, 'MySQL', 10, '从删库到跑路');INSERT INTO `books` VALUES (3, 'Linux', 5, '从进门到进牢');INSERT INTO `books` VALUES (4, 'Java', 1000, '入门放弃');INSERT INTO `books` VALUES (5, 'Java', 1000, '入门放弃');SET FOREIGN_KEY_CHECKS = 1;

(2)配置Maven地址

将Maven地址配置为自己本地安装的。

建议将这个勾选上!否则可能会出一些gaygay的错误

(3)导入pom.xml

    4.0.0    com.edu    ssmbuild    1.0-SNAPSHOT    war    ssmbuild Maven Webapp        http://www.example.com     UTF-8 1.7 1.7              junit     junit     4.11     test        mysql     mysql-connector-java     8.0.16        com.mchange     c3p0     0.9.5.2        javax.servlet     servlet-api     2.5     provided       javax.servlet.jsp     jsp-api     2.2     provided       javax.servlet     jstl     1.2        org.mybatis     mybatis     3.5.2       org.mybatis     mybatis-spring     2.0.2        org.springframework     spring-webmvc     5.1.9.RELEASE       org.springframework     spring-jdbc     5.1.9.RELEASE                   src/main/java        **/*.properties      **/*.xml    false            src/main/resources        **/*.properties      **/*.xml    false       ssmbuild                  org.apache.tomcat.maven      tomcat7-maven-plugin      2.1         80   /                  

注:这里使用的是Maven中的tomcat插件去运行的!所以要配置一下, 当然也可以使用Tomcat服务器。

使用Maven的tomcat插件需要在pom中配置和运行框tomcat7:run(如下图)

(4)applicationContext.xml

实现说明一下,本项目将为每一层设置配置文件——持久层spring-dao.xml、业务层spring-service.xml、表现层spring-mvc.xml,在applicationContext.xml中引入

            

(5)database.properties

数据库连接的基本信息

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC&characterEncoding=utf8jdbc.username=rootjdbc.password=888888

(6)编写pojo的books实体类

根据数据库的字段,设置getter、setter、toString方法。

package com.Harmony.pojo;public class Books {    private int bookID;    private String bookName;    private int bookCounts;    private String detail;    @Override    public String toString() { return "Books{" +  "bookID=" + bookID +  ", bookName='" + bookName + '\'' +  ", bookCounts=" + bookCounts +  ", detail='" + detail + '\'' +  '}';    }    public Books() {    }    public Books(int bookID, String bookName, int bookCounts, String detail) { this.bookID = bookID; this.bookName = bookName; this.bookCounts = bookCounts; this.detail = detail;    }    public int getBookID() { return bookID;    }    public void setBookID(int bookID) { this.bookID = bookID;    }    public String getBookName() { return bookName;    }    public void setBookName(String bookName) { this.bookName = bookName;    }    public int getBookCounts() { return bookCounts;    }    public void setBookCounts(int bookCounts) { this.bookCounts = bookCounts;    }    public String getDetail() { return detail;    }    public void setDetail(String detail) { this.detail = detail;    }}

(7)编写dao层(持久层)

BookMapper

编写Book类的接口,定义mybatis层的方法

public interface BookMapper {    //增加一个Book    int addBook(Books book);    //根据id删除一个Book    int deleteBookById(@Param("bookId") int id);    //更新Book    int updateBook(Books books);    //根据id查询,返回一个Book    Books queryBookById(@Param("bookId") int id);    //查询全部Book,返回list集合    List queryAllBook();}

注:这里的@Param注解,可以理解为给id取别名为bookId,在BookMapper.xml中就可以使用bookId

BookMapper.xml

         insert into ssmbuild.books(bookName,bookCounts,detail) values (#{bookName}, #{bookCounts}, #{detail})             delete from ssmbuild.books where bookID=#{bookId}             update ssmbuild.books set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail} where bookID = #{bookID}             select * from ssmbuild.books where bookID = #{bookId}             SELECT * from ssmbuild.books    

mybatis-config.xml

本来mybatis要配置数据源的,但是这里与spring整合后就将此步骤放在了spring中去做!即:spring-dao.xml文件中!

这里的mybatis-config.xml配置文件只要做两件事:

  1. typeAliases指向实体类pojo
  2. 配置相关映射文件地址,即mapper地址。
                  

(8)spring-dao.xml

mybatis框架如果独立使用的话应该将下述数据库的配置写在mybatis-config.xml中,但是这里是Spring整合MyBatis,所以建议将其写在spring-dao.xml(spirng)中。

  1. 关联数据库配置文件
  2. 连接池(这里是使用c3p0)
  3. 配置SqlSessionFactory对象
  4. 配置扫描Dao接口包,动态实现Dao接口注入到spring容器中
                                                                          

(9)业务层

BookService

//BookService:底下需要去实现,调用dao层public interface BookService {    //增加一个Book    int addBook(Books book);    //根据id删除一个Book    int deleteBookById(int id);    //更新Book    int updateBook(Books books);    //根据id查询,返回一个Book    Books queryBookById(int id);    //查询全部Book,返回list集合    List queryAllBook();}

BookServiceImpl

package com.Harmony.service;import com.Harmony.dao.BookMapper;import com.Harmony.pojo.Books;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class BookServiceImpl implements BookService {    //调用dao层的操作,设置一个set接口,方便Spring管理    private BookMapper bookMapper;    public void setBookMapper(BookMapper bookMapper) { this.bookMapper = bookMapper;    }    public int addBook(Books book) { return bookMapper.addBook(book);    }    public int deleteBookById(int id) { return bookMapper.deleteBookById(id);    }    public int updateBook(Books books) { return bookMapper.updateBook(books);    }    public Books queryBookById(int id) { return bookMapper.queryBookById(id);    }    public List queryAllBook() { return bookMapper.queryAllBook();    }}

spring-service.xml

                                   

(10)web.xml

SpringMVC项目:

  1. DispatchServlet
  2. 乱码过滤
  3. (补充)Session保证安全
    Archetype Created Web Application     DispatcherServlet org.springframework.web.servlet.DispatcherServlet      contextConfigLocation     classpath:applicationContext.xml  1         DispatcherServlet /             encodingFilter      org.springframework.web.filter.CharacterEncodingFilter       encoding     utf-8          encodingFilter /*             15        

(11)spring-mvc.xml

spring-mvc.xml配置文件:

  1. 注解驱动
  2. 静态资源过滤
  3. 视图解析器
  4. 扫描包:controller
                                           

(12)控制层

BookController

package com.Harmony.controller;import com.Harmony.pojo.Books;import com.Harmony.service.BookService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import java.util.List;@Controller@RequestMapping("/book")public class BookController {    @Autowired    @Qualifier("BookServiceImpl")    private BookService bookService;    @RequestMapping("/allBook")    public String list(Model model) { List list = bookService.queryAllBook(); model.addAttribute("list", list); return "allBook";    }    @RequestMapping("/toAddBook")    public String toAddPaper() { return "addBook";    }    @RequestMapping("/addBook")    public String addPaper(Books books) { System.out.println(books); bookService.addBook(books); return "redirect:/book/allBook";    }    @RequestMapping("/toUpdateBook")    public String toUpdateBook(Model model, int id) { Books books = bookService.queryBookById(id); System.out.println(books); model.addAttribute("book",books ); return "updateBook";    }    @RequestMapping("/updateBook")    public String updateBook(Model model, Books book) { System.out.println(book); bookService.updateBook(book); Books books = bookService.queryBookById(book.getBookID()); model.addAttribute("books", books); return "redirect:/book/allBook";    }    @RequestMapping("/del/{bookId}")    public String deleteBook(@PathVariable("bookId") int id) { bookService.deleteBookById(id); return "redirect:/book/allBook";    }}

(13)前端页面

addBook.jsp

    新增<a href="https://www.csdndoc.com/tag/%e4%b9%a6%e7%b1%8d" title="View all posts in 书籍" target="_blank" style="color:#0ec3f3;font-size: 18px;font-weight: 600;">书籍</a>            
书籍名称:


书籍数量:


书籍详情:


allBook.jsp

    书籍列表            
书籍编号 书籍名字 书籍数量 书籍详情 操作
${book.getBookID()} ${book.getBookName()} ${book.getBookCounts()} ${book.getDetail()} 更改 |删除

updateBook.jsp 

    修改信息            
书籍名称: 书籍数量: 书籍详情:

完整代码

链接:https://pan.baidu.com/s/1X-wdmckju-4oNiNnmKRhjQ 
提取码:ctqr 
--来自百度网盘超级会员V3的分享

海量搞笑GIF动态图片