# ssm-build **Repository Path**: codeming2000/ssm-build ## Basic Information - **Project Name**: ssm-build - **Description**: SSM整合案例 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-01 - **Last Updated**: 2021-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > 环境要求 环境: - IDEA - MySQL 8.0 - Tomcat 9 - Maven 3.6 要求: - 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识; >数据库环境 创建一个存放书籍数据的数据库表 ```sql CREATE DATABASE `ssmbuild`; USE `ssmbuild`; DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ( `bookID` INT(10) 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,'从进门到进牢'); ``` > 基本环境搭建 1. 新建一Maven项目!ssmbuild , 添加web的支持 2. 导入相关的pom依赖! ```xml junit junit 4.12 mysql mysql-connector-java 8.0.21 com.mchange c3p0 0.9.5.2 javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.2 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 ``` 3. Maven资源过滤设置 ```xml src/main/java **/*.properties **/*.xml false src/main/resources **/*.properties **/*.xml false ``` 4. 建立基本结构和配置框架! - com.ming.pojo - com.ming.dao - com.ming.service - com.ming.controller - mybatis-config.xml ```xml ``` - applicationContext.xml ```xml ``` > Mybatis层编写 1. 数据库配置文件 **database.properties** ```properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=123456 ``` 2. IDEA关联数据库 3. 编写MyBatis的核心配置文件 ```xml ``` 4. 编写数据库对应的实体类 com.ming.pojo.Books (使用lombok插件) ```java package com.ming.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Books { private int bookID; private String bookName; private int bookCounts; private String detail; } ``` 5. 编写Dao层的 Mapper接口 ```java package com.ming.dao; import com.ming.pojo.Books; import java.util.List; public interface BookMapper { //增加一个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(); } ``` 6. 编写接口对应的 Mapper.xml 文件。需要导入MyBatis的包 ```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} ``` 7. 编写Service层的接口和实现类 接口: ```java package com.ming.service; import com.ming.pojo.Books; import java.util.List; //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(); } ``` 实现类: ```java package com.ming.service.impl; import com.ming.dao.BookMapper; import com.ming.pojo.Books; import com.ming.service.BookService; import java.util.List; public 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层 1. 配置**Spring整合MyBatis**,我们这里数据源使用c3p0连接池; 2. 我们去编写Spring整合Mybatis的相关的配置文件;spring-dao.xml ```xml ``` 3. **Spring整合service层** spring-service.xml ```xml ``` > SpringMVC层 1. **web.xml** ```xml DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:applicationContext.xml 1 DispatcherServlet / encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encodingFilter /* 15 ``` 2. **spring-mvc.xml** ```xml ``` 3. **Spring配置整合文件,applicationContext.xml** ```xml ``` > Controller 和 视图层编写 1. BookController 类编写 , 方法一:查询全部书籍 ```java @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"; } } ``` 2. 编写首页 **index.jsp** ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 首页

点击进入列表页

``` 3. 书籍列表页面 **allBook.jsp** ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 书籍列表
书籍编号 书籍名字 书籍数量 书籍详情 操作
${book.getBookID()} ${book.getBookName()} ${book.getBookCounts()} ${book.getDetail()} 更改 | 删除
``` 4. BookController 类编写 , 方法二:添加书籍 ```java @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"; } ``` 5. 添加书籍页面:**addBook.jsp** ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 新增书籍
书籍名称:


书籍数量:


书籍详情:


``` 6. BookController 类编写 , 方法三:修改书籍 ```java @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"; } ``` 7. 修改书籍页面 **updateBook.jsp** ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 修改信息
书籍名称: 书籍数量: 书籍详情:
``` 8. BookController 类编写 , 方法四:删除书籍 ```java @RequestMapping("/del/{bookId}") public String deleteBook(@PathVariable("bookId") int id) { bookService.deleteBookById(id); return "redirect:/book/allBook"; } ``` **配置Tomcat,进行运行!** > 项目结构图 ![图片](https://gitee.com/codeming2000/myblog-photos/raw/master/SSM%E6%95%B4%E5%90%88.assets/640.png) ![图片](https://gitee.com/codeming2000/myblog-photos/raw/master/SSM%E6%95%B4%E5%90%88.assets/640-1614570237612.png) < 学习自狂神说 > 案例地址:https://gitee.com/codeming2000/ssm-build