狂神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配置文件只要做两件事:
- typeAliases指向实体类pojo
- 配置相关映射文件地址,即mapper地址。
(8)spring-dao.xml
mybatis框架如果独立使用的话应该将下述数据库的配置写在mybatis-config.xml中,但是这里是Spring整合MyBatis,所以建议将其写在spring-dao.xml(spirng)中。
- 关联数据库配置文件
- 连接池(这里是使用c3p0)
- 配置SqlSessionFactory对象
- 配置扫描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项目:
- DispatchServlet
- 乱码过滤
- (补充)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配置文件:
- 注解驱动
- 静态资源过滤
- 视图解析器
- 扫描包: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
新增书籍 新增书籍
书籍名称:
书籍数量:
书籍详情:
allBook.jsp
书籍列表
updateBook.jsp
修改信息 修改信息
书籍名称: 书籍数量: 书籍详情:
完整代码
链接:https://pan.baidu.com/s/1X-wdmckju-4oNiNnmKRhjQ
提取码:ctqr
--来自百度网盘超级会员V3的分享