SSM项目整合

SSM整合项目

1、创建数据库ssmbuild,创建表books,插入相关数据!

CREATE DATABASE ssmbuild; //创建数据库

USE ssmbuild; //使用数据库

DROP TABLE IF EXISTS books; //删除空表

//创建books表
CREATE TABLE ssmbuild.books (
bookID int NOT NULL AUTO_INCREMENT COMMENT '书id',
bookName varchar(100) NOT NULL COMMENT '书名',
bookCounts int NOT NULL COMMENT '数量',
detail varchar(200) NOT NULL COMMENT '描述',
PRIMARY KEY (bookID)
) ENGINE = InnoDB CHARSET = utf8 ;

//插入数据
INSERT INTO books (bookID,bookName,bookCounts,detail)VALUES
(1,'JAVA',1,'从入门到放弃'),
(2,'MySQL',10,'从删库到跑路'),
(3,'Linux',5,'从进门到进牢');

2、基本环境搭建

1.创建一个普通的,maven项目!

2.在pom.xml导入相关依赖



4.0.0

com.fan
ssmbuild
1.0-SNAPSHOT




junit
junit
4.13.2



mysql
mysql-connector-java
8.0.28



c3p0
c3p0
0.9.1.2



javax.servlet
servlet-api
2.5


javax.servlet.jsp
jsp-api
2.0


javax.servlet
jstl
1.2



org.mybatis
mybatis-spring
2.0.7


org.mybatis
mybatis
3.5.9



org.springframework
spring-webmvc
5.3.17


org.springframework
spring-jdbc
5.3.17



org.projectlombok
lombok
1.18.22




src/main/resources

/*.properties
/.xml

true


src/main/java

**/
.properties
**/*.xml

true



3.连接数据库

4.在java包中创建com.fan.controler包 com.fan.dao包;com.fan.service包

com.fan.pojo包=========可能还有其他的,fiter包,utils包!

5.在resources中写好maybatis核心配置文件,以及spring核心配置文件,还有连接database.properties!

Mybatis-config.xml









applicationContext.xml




db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
jdbc.username=root
jdbc.password=

6.在pojo包中创建实体类,Books.java

package com.fan.pojo;
import java.util.Objects;
public class Books {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;

public Books() {
}

public Books(int bookID, String bookName, int bookCounts, String detail) {
this.bookID = bookID;
this.bookName = bookName;
this.bookCounts = bookCounts;
this.detail = detail;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Books books = (Books) o;
return bookID == books.bookID &&
bookCounts == books.bookCounts &&
Objects.equals(bookName, books.bookName) &&
Objects.equals(detail, books.detail);
}

@Override
public int hashCode() {
return Objects.hash(bookID, bookName, bookCounts, detail);
}

public int getBookID() {
return bookID;
}

public void setBookID(int bookID) {
this.bookID = bookID;
}

public String getBookName() {
return bookName;
}

public void setBookName(String bookName) {
this.bookName = bookName;
}

public int getBookCounts() {
return bookCounts;
}

public void setBookCounts(int bookCounts) {
this.bookCounts = bookCounts;
}

public String getDetail() {
return detail;
}

public void setDetail(String detail) {
this.detail = detail;
}

@Override
public String toString() {
return "Books{" +
"bookID=" + bookID +
", bookName='" + bookName + ''' +
", bookCounts=" + bookCounts +
", detail='" + detail + ''' +
'}';
}
}

7.在dao中写一个BookMapper.java的接口

package com.fan.dao;

import com.fan.pojo.Books;

import java.util.List;

public interface BookMapper {

//增加一本书
int addBook(Books books);

//删除一本书
int deleteBookById(int id);

//更新一本书
int updateBook(Books books);

//查询一本书
int queryBookById(int id);

//查询全部的书
List queryAllBook();
}

8.在dao中写BookMapper.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}



9.在业务层service中创建 BookService.java接口,和其实现类!

BookService.java

package com.fan.service;
import com.fan.pojo.Books;
import java.util.List;

public interface BookService {
//增加一本书
int addBook(Books books);

//删除一本书
int deleteBookById(int id);

//更新一本书
int updateBook(Books books);

//查询一本书
int queryBookById(int id);

//查询全部的书
List queryAllBook();
}

BookServiceImpl.java

package com.fan.service;
import com.fan.dao.BookMapper;
import com.fan.pojo.Books;
import java.util.List;

public class BookServiceImpl implements BookService{
//service层调用dao层:组合Dao
private BookMapper bookMapper;
//Setter方法
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
==================================================================
public int addBook(Books books) {
return bookMapper.addBook(books);
}

public int deleteBookById(int id) {
return bookMapper.deleteBookById(id);
}

public int updateBook(Books books) {
return bookMapper.updateBook(books);
}

public int queryBookById(int id) {
return bookMapper.queryBookById(id);
}

public List queryAllBook() {
return bookMapper.queryAllBook();
}
}


3、Spring整合Dao层

在resources中创建spring-dao.xml配置文件




<context:property-placeholder location="classpath:database.properties"/>

























4、Spring整合Service层

在resources中创建spring-service.xml




<context:component-scan base-package="com.fan.service"/>









5、SpringMVC

1、添加一个web文件夹,配置web.xml文件



4.0.0

com.fan
ssmbuild
1.0-SNAPSHOT




junit
junit
4.13.2



mysql
mysql-connector-java
8.0.28



com.mchange
c3p0
0.9.5.5



javax.servlet
servlet-api
2.5


javax.servlet.jsp
jsp-api
2.0


javax.servlet
jstl
1.2





springmvc
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:applicationContext.xml



springmvc
/



encodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
utf-8



encodingFilter
/*



10




org.mybatis
mybatis-spring
2.0.7


org.mybatis
mybatis
3.5.9



org.springframework
spring-webmvc
5.3.17


org.springframework
spring-jdbc
5.3.17



org.projectlombok
lombok
1.18.22




src/main/resources

/*.properties
/.xml

true


src/main/java

**/
.properties
**/*.xml

true




org.apache.maven.plugins
maven-compiler-plugin

7
7



2、配置spring-mvc.xml



mvc:annotation-driven/

mvc:default-servlet-handler/

<context:component-scan base-package="com.fan.controller"/>




3、在WEB-INF包下创建一个jsp包,

6、开始controller层和jsp层交互

在controler包中,创建BookController.java,其目的是:controller层调用service层---这里是查询全部书籍

import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/book")

public class BookController {
//controller 调用service层
//@Autowired 默认是按照类去匹配,配合。 @Qualifier 指定按照名称去装配 bean。
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
//查询全部的书籍,并且返回到一个书籍展示页面!
@RequestMapping("/allBook")
public String list(Model model){
List list =bookService.queryAllBook();
model.addAttribute("list",list);
return "allBook";
}
}

在WEB-INF中创建jsp包,再建立allBook.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


书籍展示


书籍展示


7、实现书籍的CRUD

7.1 书籍的显示功能

在jsp包下创建allBook.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


书籍展示











<%--此处想要跳转到Addbook页面,交给controller处理,然后跳转--%>
新增书籍
















<%--书籍从数据库中查询出来,从这个list中遍历出来--%>

<c:forEach var="book" items="${list}">







</c:forEach>

书籍编号 书籍名称 书籍数量 书籍详情 操作
${book.bookID} ${book.bookName} ${book.bookCounts} ${book.detail}
修改
 || 
删除


在controller层中的BookController.java写相关操作

package com.fan.controller;

import com.fan.pojo.Books;
import com.fan.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.List;

@Controller
@RequestMapping("/book")

public class BookController {
//controller 调用service层
//@Autowired 默认是按照类去匹配,配合。 @Qualifier 指定按照名称去装配 bean。
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
//查询全部的书籍,并且返回到一个书籍展示页面!
@RequestMapping("/allBook")
public String list(Model model){
List list =bookService.queryAllBook();
model.addAttribute("list",list);
return "allBook";
}
//跳转到增加书籍页面
@RequestMapping("/toAddBook")
public String toAddPaper(){
return "addBook";
}
//添加书籍的请求
@RequestMapping("/addBook")
public String addBook(Books books){
System.out.println("addBook=>"+books);
bookService.addBook(books);
return "redirect:/book/allBook";//重定向到allBook请求

}
//跳转到修改页面
@RequestMapping("/toUpdate")
public String toUpdatePaper(int id,Model model){
Books books = bookService.queryBookById(id);
model.addAttribute("QBook",books);
return ("updateBook");
}
//修改书籍的请求
@RequestMapping("/updateBook")
public String updateBook(Books books){
System.out.println("updateBook"+books);
bookService.updateBook(books);
return "redirect:/book/allBook";
}
//删除书籍
@RequestMapping("/deleteBook/{bookId}")
public String deleteBook(@PathVariable("bookId") int id){
bookService.deleteBookById(id);
return "redirect:/book/allBook";
}

}

7.2 书籍的添加功能

在前端页面的的书籍下面增加一个添加书籍的按钮



<%--此处想要跳转到Addbook页面,交给controller处理,然后跳转--%>
新增书籍

交给Controller层处理,在controller层写相关方法

//跳转到增加书籍页面
@RequestMapping("/toAddBook")
public String toAddPaper(){

return "addBook";
}
//添加书籍的请求
@RequestMapping("/addBook")
public String addBook(Books books){
System.out.println("addBook=>"+books);
bookService.addBook(books);
return "redirect:/book/allBook";//重定向到allBook请求

}

之后再jsp包中创建addBook.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


添加书籍的页面





























7.3 书籍的修改和删除功能

在allBook.jsp中的书籍信息后面添加修改和删除按钮


修改
 || 
删除

在controller层写修改和删除的方法

//跳转到修改页面
@RequestMapping("/toUpdate")
public String toUpdatePaper(int id,Model model){
Books books = bookService.queryBookById(id);
model.addAttribute("QBook",books);
return ("updateBook");
}
//修改书籍的请求
@RequestMapping("/updateBook")
public String updateBook(Books books){
System.out.println("updateBook"+books);
bookService.updateBook(books);
return "redirect:/book/allBook";
}
//删除书籍
@RequestMapping("/deleteBook/{bookId}")
public String deleteBook(@PathVariable("bookId") int id){
bookService.deleteBookById(id);
return "redirect:/book/allBook";
}

在jsp包中写相对应的页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


修改书籍页面











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



















7.4 书籍的查询

<%--查询书籍--%>


${error}


controller层

//查询书籍
@RequestMapping("/queryBook")
public String queryBook(String queryBookName,Model model){
Books books = bookService.queryBookByName(queryBookName);
System.err.println("queryBook=>"+books);
List list = new ArrayList<>();
list.add(books);
if(books==null){
list = bookService.queryAllBook();
model.addAttribute("error","未查到");
}
model.addAttribute("list",list);
return "allBook";
}

dao层

//查询全部的书,BookMapper.java
List queryAllBook();
Books queryBookByName(@Param("bookName") String bookName);


service层

//BookService.java
Books queryBookByName(@Param("bookName") String bookName);

public Books queryBookByName(String bookName) {
return bookMapper.queryBookByName(bookName);
}

8、SSM项目整合完毕全部代码

posted @ 2022-03-26 19:02  孤舟蓑衣客  阅读(33)  评论(0)    收藏  举报