完整SSM框架图书管理系统开发流程
环境:
IDEA
MySQL 5.5.62
Tomcat 8.5.61
Maven 3.6
1.数据库环境
创建一个存放书籍数据的数据库表
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,'从进门到进牢');
2.基本环境搭建
- 新建一Maven项目!ssmbuild , 添加web的支持
- 导入相关的pom依赖
org.springframework
spring-webmvc
5.3.12
org.springframework
spring-jdbc
5.3.12
junit
junit
4.13
com.fasterxml.jackson.core
jackson-databind
2.13.0
com.alibaba
fastjson
1.2.78
org.aspectj
aspectjweaver
1.9.7
mysql
mysql-connector-java
5.1.32
org.mybatis
mybatis
3.5.2
org.springframework
spring-webmvc
5.3.12
org.springframework
spring-jdbc
5.3.12
org.mybatis
mybatis-spring
2.0.6
com.mchange
c3p0
0.9.5.5
javax.servlet
javax.servlet-api
4.0.1
javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
org.projectlombok
lombok
1.18.20
javax.servlet
jstl
1.2
3.maven资源解析
src/main/resources
**/*.properties
**/*.xml
src/main/java
**/*.properties
**/*.xml
true
4.基本结构和配置框架
5.配置mybatis-config.xml(只需配置设置和别名即可,其他使用spring的数据源替换Mybatis的配置)
<?xml version="1.0" encoding="UTF-8" ?>
5.编写pojo层
实体类
package com.ji.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;
}
6.编写dao层(操作数据库)
Mapper接口
package com.ji.dao;
import com.ji.pojo.Books;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BooksMapper {
//增加
int addBook(Books books);
//删除
int deleteBooks(@Param ("bookID") int id);
//更改
int updateBooks(Books books);
//查询一本书
Books queryBooks(@Param ("bookID") int id);
List queryAllBooks();
List queryBookByName(String bookName);
}
mapper.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?>
insert into `books`(`bookName`,`bookCounts`,`detail`)
values (#{bookName},#{bookCounts},#{detail})
delete from `books`
`bookID`=#{bookID}
update `books`
`bookName`=#{bookName},`bookCounts`=#{bookCounts},`detail`=#{detail}
`bookID`=#{bookID}
使用spring-dao.xml代替mybatis-config.xml配置数据源
<?xml version="1.0" encoding="UTF-8"?>
7.编写service层
spring-service.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
Bookservice层接口
package com.ji.service;
import com.ji.pojo.Books;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BookService {
//增加
int addBook(Books books);
//删除
int deleteBooks(int id);
//更改
int updateBooks(Books books);
//查询一本书
Books queryBooks(int id);
List queryAllBooks();
List queryBookByName(String bookName);
}
BookService实现类
package com.ji.service;
import com.ji.dao.BooksMapper;
import com.ji.pojo.Books;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public class BookServiceImpl implements BookService{
//service层调用dao层,组合dao
private BooksMapper booksMapper;
public BooksMapper getBooksMapper() {
return booksMapper;
}
public void setBooksMapper(BooksMapper booksMapper) {
this.booksMapper = booksMapper;
}
public int addBook(Books books) {
return booksMapper.addBook (books);
}
public int deleteBooks(int id) {
return booksMapper.deleteBooks (id);
}
public int updateBooks(Books books) {
return booksMapper.updateBooks (books);
}
public Books queryBooks(int id) {
return booksMapper.queryBooks (id);
}
public List queryAllBooks() {
return booksMapper.queryAllBooks ();
}
public List queryBookByName(String bookName) {
return booksMapper.queryBookByName (bookName);
}
}
8.配置(springmvc)
配置springmvc-servlet.xml文件
<?xml version="1.0" encoding="UTF-8"?>
配置整合三层的xml文件的总文件
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
配置web/WEB-INF目录下的web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:ApplicationContext.xml
1
springmvc
/
encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encoding
/*
9.编写Controller层
package com.ji.controller;
import com.ji.pojo.Books;
import com.ji.service.BookService;
import com.ji.service.BookServiceImpl;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
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.ui.ModelMap;
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 {
//controller层调用service层
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
//查询全部书记,并返回一个书籍展示页面
@RequestMapping("/allBook")
public String list(Model model)
{
List list=bookService.queryAllBooks ();
model.addAttribute ("list",list);
return "allBooks";
}
//跳转到增加书籍页面
@RequestMapping("/toAddBook")
public String toAddPaper()
{
return "addBook";
}
//添加书籍请求
@RequestMapping("/addBook")
public String addBook(Books books)
{
System.out.println (books);
bookService.addBook (books);
return "redirect:/book/allBook";//重定向到我们的@RequestMapping("allBook")请求
}
@RequestMapping("/toUpdate")
public String toUpdateBook(int id,Model model)
{
Books books = bookService.queryBooks (id);
model.addAttribute ("QueryBooks",books);
return "updateBook";
}
@RequestMapping("/updateBook")
public String UpdateBook(Books books)
{
System.out.println (books);
int i = bookService.updateBooks (books);
if(i>0) System.out.println ("successful");
else System.out.println ("failed");
return "redirect:/book/allBook";
}
//删除书籍
@RequestMapping("/deleteBook/{bookId}")
public String deleteBook(@PathVariable("bookId") int id)
{
bookService.deleteBooks (id);
return "redirect:/book/allBook";
}
//查询书籍
@RequestMapping("QueryBook")
public String queryBook(String queryBookName,Model model)
{
List books = bookService.queryBookByName (queryBookName);
if(books.size ()==0)
{
List list=bookService.queryAllBooks ();
model.addAttribute ("list",list);
model.addAttribute ("error","未查到");
return "allBooks";
}
List list=new ArrayList ();
list=books;
model.addAttribute ("list",list);
return "allBooks";
}
}
10.编写jsp文件
主页面 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美化界面--%>
增加书籍页面 addBooks.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
新增书籍
更新书籍页面 updateBooks.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
修改书籍
注意
引入新jar包时,需要将jar打包到war包中
文件-》项目结构-》artifacts
在WEB-INF下新建web目录将所用jar包导入