# ssm框架整合(图书管功能) **Repository Path**: modest2001/ssm01 ## Basic Information - **Project Name**: ssm框架整合(图书管功能) - **Description**: ssm框架整合 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-12 - **Last Updated**: 2021-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README --- title: ssm简单整合 top: false cover: false date: 2021-09-12 14:18:00 summary: ssm框架整合 tags: - ssm - java - 笔记 categories: - 笔记类 - 项目类 --- # 准备工作 数据库创建: ```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,'从进门到进牢'); ``` maven依赖 ```xml junit junit 4.12 mysql mysql-connector-java 5.1.47 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 ``` maven资源过滤 ```xml src/main/java **/*.properties **/*.xml false src/main/resources **/*.properties **/*.xml false ``` # 配置基本框架 包 在com.dai 下面分别建立controller、mapper、pojo、service controller:前后端控制实现。 mapper:用于mybatis和数据库操作的实现 pojo:数据库对应的实现类(字段名和数据库一致) service:事务的调用实现 # 连接数据库 先配置一个数据库的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 ``` 再配置mybatis-config.xml来控制数据库 ```java ``` 在利用spring容器创建一个spring到文件来获取mybatis-config.xml并完成数据库连接 ```xml ``` # 编写实体类 在pojo包下创建和数据库字段一一对应的实体类 ```java package com.dai.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; } //使用了注解的无参和有参和lombok插件来自动配置相关参数 ``` # 配置spring层面 配置applicationContext.xml ```xml ``` 创建mapper包下mapper接口 ```java package com.dai.mapper; import com.dai.pojo.Books; import org.apache.ibatis.annotations.Param; import java.util.List; public interface BookMapper { int addBook(Books books); int deleteBook(@Param("bookId") int id); int updateBook(Books books); Books queryBookById(@Param("bookId") int id); List queryAllBooks(); Books queryBookName(@Param("bookName") String name); } ``` xml配置文件实现mapper接口完成IOC ```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} ``` 配置spring-dao层来绑定mybatis文件 配置sqlSessionFactory 将mapper接口注入到spring容器中 ```xml ``` # 配置service层 在service包下创建接口并用实现接口 ```java package com.dai.service; import com.dai.pojo.Books; import org.apache.ibatis.annotations.Param; import java.util.List; public interface BookService { int addBook(Books books); int deleteBook(int id); int updateBook(Books books); Books queryBookById(int id); List queryAllBooks(); Books queryBookName(String name); } ``` ```java package com.dai.service; import com.dai.mapper.BookMapper; import com.dai.pojo.Books; import lombok.Lombok; import org.apache.ibatis.annotations.Param; import java.util.List; public class BookServiceImpl implements BookService{ //Service调用mapper层,组合 private BookMapper bookMapper; public void setBookMapper(BookMapper bookMapper){ this.bookMapper=bookMapper; } @Override public int addBook(Books books) { return bookMapper.addBook(books); } @Override public int deleteBook(int id) { return bookMapper.deleteBook(id); } @Override public int updateBook(Books books) { return bookMapper.updateBook(books); } @Override public Books queryBookById(int id) { return bookMapper.queryBookById(id); } @Override public List queryAllBooks() { return bookMapper.queryAllBooks(); } @Override public Books queryBookName(String name) { return bookMapper.queryBookName(name); } } ``` 最后将service层面注册到spring容器中 ```xml ``` # 配置controller层 在controller包下使用注解@Contreoller实现自动注入到spring层中 ```java package com.dai.controller; import com.dai.pojo.Books; import com.dai.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.ArrayList; 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.queryAllBooks(); model.addAttribute("list",list); return "allBook"; } //跳转增加页面 @RequestMapping("/toAddBook") public String toAddPaper(){ return "addBook"; } //添加书籍的请求 @RequestMapping("/addBook") public String addBook(Books books){ bookService.addBook(books); return "redirect:/book/allBook"; } //跳转到修改界面 @RequestMapping("/toUpdate") public String toUpdatePaper(int id,Model model){ Books books = bookService.queryBookById(id); model.addAttribute("QBook",books); System.out.println(books); return "Update"; } //修改书籍 @RequestMapping("/update") public String UpdatePaper(Books books){ System.out.println("updateBook------"+books); bookService.updateBook(books); return "redirect:/book/allBook"; } //删除书籍 @RequestMapping("/delete/{bookId}") public String deletePaper(@PathVariable("bookId") int id){ System.out.println("delete--------"); bookService.deleteBook(id); return "redirect:/book/allBook"; } //查询书籍 @RequestMapping("/queryBook") public String queryBook(String queryBookName,Model model){ System.out.println("查询----------------"); Books books = bookService.queryBookName(queryBookName); List list=new ArrayList<>(); list.add(books); System.err.println(books); if(books==null){ list= bookService.queryAllBooks(); model.addAttribute("error","未查到"); } model.addAttribute("list",list); return "allBook"; } } ``` 配置spring-mvc中 1.注解驱动 2.扫描包 3.视图解析器 ```xml ``` # 配置web层面 配置web.xml: 1.配置DispatcherServlet(spring中的调度功能) 2.配置乱码过滤 3.配置session延时 ```xml springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:applicationContext.xml 1 springmvc / encoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encoding /* 15 ``` 创建在WEB-INF下面创建jsp包,包类是controller类中跳转的目标 前端三个jsp文件 addBook.jsp ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 新增书籍
书籍名称:


书籍数量:


书籍详情:


``` allBook.jsp ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 书籍列表
书籍编号 书籍名字 书籍数量 书籍详情 操作
${book.bookID} ${book.bookName} ${book.bookCounts} ${book.detail} ${error} 修改   |   删除
``` Update.jsp ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> 修改书籍
书籍名称:


书籍数量:


书籍详情:


``` # 总结 1.先配置maven包依赖,数据库文件,和mybatis文件和数据相连。 2.根据具体功能实现创建包结构,配置applicationContext.xml 3.根据数据文件创建一一对应的实体类 4.先在mapper层下创建相应功能的接口,然后利用xml文件进行实现。 5.然后在mybatis-config.xml文件下配相应的接口,在注入到spring-dao层中 6.在service中创建功能的接口和实现类,实现类利用mapper层实现功能。 7.创建spring-service.xml文件来在将实现类进行注入,并配置事务(防止提交不成功)。 8.配置controller包中类,使用注解@Controller来完成该类自动注入,这层用于前端页面的跳转和视图解析。 9.配置spring-mvc层,在配置文件中先配置注解驱动,在配置静态资源过滤,最后配置视图解析器。 10.将mapper层,springmvc,service层的文件全部注入到applicationContext文件中,实现统一控制。 10.先添加web框架,在WEB-INF下创建相应的包结构,配置web.xml(配置DispatcherServlet实现视图调度,绑定applicationtionContext.xml文件,配置乱码过滤) 11.完成前端页面jsp的编写。