SSM整合
学习过程代码已上传Github ,供参考
SSM整合-mybatis
新建maven 项目
导入依赖、解决静态资源导出问题
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.lee
ssmbuild
1.0-SNAPSHOT
8
8
mysql
mysql-connector-java
8.0.28
com.mchange
c3p0
0.9.5.5
javax.servlet
servlet-api
2.5
javax.servlet.jsp
jsp-api
2.2
javax.servlet
jstl
1.2
org.mybatis
mybatis
3.5.7
org.mybatis
mybatis-spring
2.0.6
org.springframework
spring-webmvc
5.3.13
org.springframework
spring-jdbc
5.3.18
junit
junit
4.12
test
org.projectlombok
lombok
1.18.22
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.properties
**/*.xml
true
连接数据库
create database ssmbuild;
use ssmbuild;
create table books (
bookID int(50) not null auto_increment comment '书id',
bookName varchar(100) not null comment '书名',
bookCounts int(11) not null comment '数量',
detail varchar(200) not null comment '描述',
key bookID (bookID)
) engine=innodb default charset =utf8;
insert into books (bookID, bookName, bookCounts, detail)
VALUES (1, 'java', 1, '从入门到放弃'),
(2, 'MySQL', 10, '从删库到跑路'),
(3, 'Linux', 5, '从进门到进牢');
? ...
新建配置文件 (spring/mybatis/db)
applicationContext.xml(Spring)
<?xml version="1.0" encoding="UTF-8"?>
mybatis-config.xml(mybatis)
<?xml version="1.0" encoding="UTF-8" ?>
database.properties (连接数据库信息)
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8
jdbc.username=root
jdbc.password=ll546546
pojo
新建实体类 Book
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
}
dao (mapper)
BookMapper.java
import com.lee.pojo.Book;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BookMapper {
// 增加一本书
int addBook(Book book);
// 删除一本书
int deleteBook(@Param("bookId") int id);
// 更新一本书
int updateBook(Book book);
// 查询一本书
Book getBookById(@Param("bookId") int id);
// 查询全部的书
List getAllBooks();
}
BookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
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};
mybatis-config.xml 新增mapper映射
增加后:
<?xml version="1.0" encoding="UTF-8" ?>
service
BookService.java
package com.lee.service;
import com.lee.pojo.Book;
import java.util.List;
public interface BookService {
// 增加一本书
int addBook(Book book);
// 删除一本书
int deleteBook(int id);
// 更新一本书
int updateBook(Book book);
// 查询一本书
Book getBookById(int id);
// 查询全部的书
List getAllBooks();
}
BookServiceImpl.java
package com.lee.service;
import com.lee.dao.BookMapper;
import com.lee.pojo.Book;
import java.util.List;
// BookServiceImpl 添加 @Service 就可以被 spring-service 扫描到
public class BookServiceImpl implements BookService{
// service 调用 dao
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
@Override
public int addBook(Book book) {
return bookMapper.addBook(book);
}
@Override
public int deleteBook(int id) {
return bookMapper.deleteBook(id);
}
@Override
public int updateBook(Book book) {
return bookMapper.updateBook(book);
}
@Override
public Book getBookById(int id) {
return bookMapper.getBookById(id);
}
@Override
public List getAllBooks() {
return bookMapper.getAllBooks();
}
}
SSM整合-Spring
新建 spring-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
spring-service.xml
<?xml version="1.0" encoding="UTF-8"?>
SSM整合-SpringMVC
添加 web 支持
配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-servlet.xml
1
springmvc
/
encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encoding
/*
15
新建 springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
在WEB-INF目录下新建文件夹 jsp
controller
新建 BookController.java
package com.lee.controller;
import com.lee.pojo.Book;
import com.lee.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.RequestMapping;
import java.util.List;
@Controller
@RequestMapping("/book")
public class BookController {
// controller 调用 service
@Autowired
@Qualifier("bookServiceImpl")
private BookService bookService;
// 查询全部的书 并返回到一个数据展示页面
@RequestMapping("/allBooks")
public String listBook(Model model) {
List bookList = bookService.getAllBooks();
model.addAttribute("list", bookList);
return "allBooks";
}
}
WEB/jsp/ 下新建 allBooks.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
书籍展示
书籍展示
修改欢迎页 index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
首页
进入书籍页面
Test
package com.lee;
import com.lee.pojo.Book;
import com.lee.service.BookService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
public class MyTest {
@Test
public void test01() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService service = context.getBean("bookServiceImpl",BookService.class);
List bookList = service.getAllBooks();
for (Book book : bookList) {
System.out.println(book);
}
}
}
修改 web.xml classpath:applicationContext.xml
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext.xml
1
springmvc
/
至此配置基本完成
美化
美化 index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
首页
进入书籍页面
美化 allBooks.jsp 并添加 新增书籍 请求
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
书籍展示
<%-- BootStrap 美化界面 --%>
书籍列表--显示所有书籍
书籍编号
书籍名称
书籍数量
书籍详情
${book.bookID}
${book.bookName}
${book.bookCounts}
${book.detail}
插入功能
在 WEB-INF/jsp下新建 addBook.jsp
<%--
Created by IntelliJ IDEA.
User: KITE
Date: 22/05/01
Time: 20:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
新增书籍
<%-- BootStrap 美化界面 --%>
新增书籍
跳转至新增页面、新增书籍 BookController
// 跳转至新增书籍页面
@RequestMapping("/toAddBook")
public String toAddBookPage() {
return "addBook";
}
// 新增书籍
@RequestMapping("/addBook")
public String addBook(Book book, Model model) {
bookService.addBook(book);
return "redirect:/book/allBooks";
}

修改删除功能
allBooks.jsp增加 修改删除 请求
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
书籍展示
<%-- BootStrap 美化界面 --%>

新建 updateBook.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
修改书籍
<%-- BootStrap 美化界面 --%>
修改书籍

BookController
// 跳转至修改书籍页面
@RequestMapping("/toUpdateBook")
public String toUpdateBookPage(int id, Model model) {
// System.out.println("toUpdateBook");
Book book = bookService.getBookById(id);
model.addAttribute("GotBook", book);
return "updateBook";
}
// 修改书籍
@RequestMapping("/updateBook")
public String updateBook(Book book) {
bookService.updateBook(book);
return "redirect:/book/allBooks";
}
// 删除书籍
@RequestMapping("/deleteBook/{bookId}")
public String updateBook(@PathVariable("bookId") int id) {
bookService.deleteBook(id);
return "redirect:/book/allBooks";
}
查询功能
BookMapper.java 添加查询方法接口
// 查询
List getBookByName(String bookName);
BookMapper.xml 编写sql
BookService.java 添加查询方法接口
// 根据书名查询
List getBookByName(String bookName);
BookServiceImpl.java 实现查询方法接口
@Override
public List getBookByName(String bookName) {
return bookMapper.getBookByName(bookName);
}
BookController 实现页面跳转及结果反馈
// 查询书籍
@RequestMapping("/getBookByName")
public String getBook(String bookName, Model model) {
System.out.println("--------------------" + bookName);
List bookList = bookService.getBookByName(bookName);
if (bookList.isEmpty()) {
model.addAttribute("error", "true");
} else {
model.addAttribute("list", bookList);
}
return "allBooks";
}
allBooks.jsp 添加 查询请求以及查询为空时的提醒
<%@ page import="java.util.concurrent.TimeUnit" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
书籍展示
<%-- BootStrap 美化界面 --%>
书籍列表--显示所有书籍
<%-- 搜索为空时的三种解决方案 --%>
<%-- 提示窗口 --%>
注意! 查询内容为空!请返回书籍目录
<%-- alert 弹窗 --%>
<%out.print("<script>alert('查找内容为空');</script>");%>
<%-- 重定向首页 --%>
<%response.sendRedirect(request.getContextPath()+"/book/allBooks");%>
增加日志功能
mybatis-config.xml