# 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的编写。