目录
需求分析->功能设计->数据库设计
环境要求
环境
- IDEA
- MySQL 5.7.19
- Tomcat 9
- Maven 3.6
要求
- 熟练掌握MySQL数据库
- 熟练掌握Spring,JavaWeb及MyBatis知识
- 简单的前端知识
数据库环境
CREATE DATABASE `ssm`CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `ssm`;
CREATE TABLE `ssm`.`books` ( `book_id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id', `book_name` VARCHAR(100) NOT NULL COMMENT '书名', `book_count` INT(10) NOT NULL COMMENT '数量', `book_detail` VARCHAR(1000) NOT NULL COMMENT '描述', PRIMARY KEY (`book_id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;
INSERT INTO `ssm`.`books` (`book_name`, `book_count`, `book_detail`) VALUES ('Java', '1', '从入门到放弃');
INSERT INTO `ssm`.`books` (`book_name`, `book_count`, `book_detail`) VALUES ('MySQL', '11', '从删库到跑路');
INSERT INTO `ssm`.`books` (`book_name`, `book_count`, `book_detail`) VALUES ('Linux', '5', 'j');
SELECT * FROM books LIMIT 0, 1000;
基本环境搭建
创建maven项目
pom.xml添加依赖,添加资源导出
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.qing
ssm
1.0-SNAPSHOT
junit
junit
4.13.2
org.projectlombok
lombok
1.18.20
mysql
mysql-connector-java
5.1.49
com.mchange
c3p0
0.9.5.5
javax.servlet
servlet-api
2.5
javax.servlet.jsp
jsp-api
2.2
javax.servlet
jstl
1.2
org.mybatis
mybatis
3.5.7
org.mybatis
mybatis-spring
2.0.6
org.springframework
spring-webmvc
5.3.9
org.springframework
spring-jdbc
5.3.9
org.aspectj
aspectjweaver
1.9.7
runtime
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.properties
**/*.xml
true
idea连接数据库
提交项目到Git
git@gitee.com:wl3pbzhyq/ssm.git
创建基础包
创建配置文件
db.properties
driver=com.mysql.jdbc.Driver
# 如果使用的是MySQL8.0+,增加一个时区的配置:&serverTimezone=Asia/Shanghai
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
创建实体类
package com.qing.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
private int bookId;
private String bookName;
private int bookCount;
private String bookDetail;
}
创建Mapper接口和Mapper.xml
package com.qing.dao;
import com.qing.pojo.Books;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BooksMapper {
/**
* 新增书
* @param books
* @return
*/
int add(Books books);
/**
* 根据Id删除书
* @param bookId
* @return
*/
int deleteById(@Param("bookId") int bookId);
/**
* 修改书
* @param books
* @return
*/
int update(Books books);
/**
* 根据Id获取书
* @param bookId
* @return
*/
Books getBooksById(@Param("bookId") int bookId);
/**
* 获取全部书
* @return
*/
List listBooks();
}
<?xml version="1.0" encoding="UTF-8" ?>
insert into ssm.books(book_name, book_count, book_detail)
values (#{bookName},#{bookCount},#{bookDetail})
delete from ssm.books where book_id = #{bookId}
update ssm.books
set book_name=#{bookName},book_count=#{bookCount},book_detail=#{bookDetail}
where book_id=#{bookId}
select * from ssm.books where book_id=#{bookId}
select * from ssm.books
注册Mapper到mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
创建Service接口和实现类
package com.qing.service;
import com.qing.pojo.Books;
import java.util.List;
public interface BooksService {
/**
* 新增书
* @param books
* @return
*/
int add(Books books);
/**
* 根据Id删除书
* @param bookId
* @return
*/
int deleteById(int bookId);
/**
* 修改书
* @param books
* @return
*/
int update(Books books);
/**
* 根据Id获取书
* @param bookId
* @return
*/
Books getBooksById(int bookId);
/**
* 获取全部书
* @return
*/
List listBooks();
}
package com.qing.service;
import com.qing.dao.BooksMapper;
import com.qing.pojo.Books;
import java.util.List;
public class BooksServiceImpl implements BooksService {
// service调dao层,组合Dao
private BooksMapper booksMapper;
public void setBooksMapper(BooksMapper booksMapper) {
this.booksMapper = booksMapper;
}
public int add(Books books) {
return booksMapper.add(books);
}
public int deleteById(int bookId) {
return booksMapper.deleteById(bookId);
}
public int update(Books books) {
return booksMapper.update(books);
}
public Books getBooksById(int bookId) {
return booksMapper.getBooksById(bookId);
}
public List listBooks() {
return booksMapper.listBooks();
}
}
Spring配置文件
创建配置文件 spring-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
创建配置文件 spring-service.xml
<?xml version="1.0" encoding="UTF-8"?>
创建配置文件 spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
applicationContext.xml导入spring-dao.xml spring-service.xml spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
项目添加web框架支持
配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
spingmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext.xml
1
spingmvc
/
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encodingFilter
/*
15
创建Controller
package com.qing.controller;
import com.qing.pojo.Books;
import com.qing.service.BooksService;
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.RequestMapping;
import java.util.List;
@Controller
@RequestMapping("/books")
public class BooksController {
@Autowired
@Qualifier("BookServiceImpl")
private BooksService booksService;
@RequestMapping("/listBooks")
public String listBooks(Model model) {
List list = booksService.listBooks();
model.addAttribute("list",list);
return "listBooks";
}
}
创建首页和书库页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ 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.bookCount} | ${book.bookDetail} |
Artifacts中WEB-INF下创建lib,并选择jar
配置Tomcat,并测试