完整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美化界面--%>
    


<%--查询书籍--%>
${error}
<%--书籍从数据库中查出,从这个list中遍历--%>
书籍编号 书籍名称 书籍数量 书籍详情 操作
${book.bookID} ${book.bookName} ${book.bookCounts} ${book.detail} 修改   |   删除

增加书籍页面 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
    


<%--提交修改sql请求但是修改失败,初次考虑是事务问题,配置完毕事务,依旧修改失败 看一下sql语句能否执行成功 从前端传递隐藏域--%>

注意
引入新jar包时,需要将jar打包到war包中
文件-》项目结构-》artifacts
在WEB-INF下新建web目录将所用jar包导入