# java-ssm-demo
**Repository Path**: ifu25/java-ssm-demo
## Basic Information
- **Project Name**: java-ssm-demo
- **Description**: SSM 框架集成演示 Demo。Spring、Spring MVC、MyBatis 最简单示例。
参考视频:https://www.bilibili.com/video/BV1hE411F77L
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-03-10
- **Last Updated**: 2021-03-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## SSM 框架入门演示示例
### 参考视频
https://www.bilibili.com/video/BV1hE411F77L
### 代码说明
此代码为参照上面视频练习而编写,项目结构及部分代码与视频有差异。
### 集成框架
```
spring-mvc:5.2.10
mybatis:3.5.6
```
> 注:实体类需要安装 `lombok` 插件
### 建表语句及初始化数据
```sql
create table tingting.user
(
id int auto_increment primary key,
userName varchar(255) null,
sex varchar(255) null,
birthday date null,
address varchar(255) null
);
INSERT INTO tingting.user (id, userName, sex, birthday, address) VALUES (1, '莫婷', '女', '1998-01-01', '淄博');
INSERT INTO tingting.user (id, userName, sex, birthday, address) VALUES (10, '张三', '男', null, '火星');
INSERT INTO tingting.user (id, userName, sex, birthday, address) VALUES (11, '李四', '女', '1965-12-06', '菏泽单县');
INSERT INTO tingting.user (id, userName, sex, birthday, address) VALUES (13, '王五', '男', '2021-03-08', '天津河东');
INSERT INTO tingting.user (id, userName, sex, birthday, address) VALUES (14, '赵六', '女', '2021-03-18', '火星');
```
## 视频原始文档:
### SSM 框架整合
Spring + Spring MVC + MyBatis
Spring MVC 负责实现 MVC 设计模式,MyBatis 负责数据持久层,Spring 负责管理 Spring MVC 和 MyBatis 相关对象的创建和依赖注入。
- 创建 Maven 工程,pom.xml
```xml
org.springframework
spring-webmvc
5.0.11.RELEASE
org.springframework
spring-jdbc
5.0.11.RELEASE
org.springframework
spring-aop
5.0.11.RELEASE
org.springframework
spring-aspects
5.0.11.RELEASE
org.mybatis
mybatis
3.4.5
org.mybatis
mybatis-spring
1.3.1
mysql
mysql-connector-java
8.0.11
c3p0
c3p0
0.9.1.2
jstl
jstl
1.2
javax.servlet
javax.servlet-api
3.1.0
org.projectlombok
lombok
1.18.6
provided
```
- web.xml 中配置 SpringMVC、Spring、字符编码过滤器、加载静态资源。
```xml
Archetype Created Web Application
contextConfigLocation
classpath:spring.xml
org.springframework.web.context.ContextLoaderListener
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
dispatcherServlet
/
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
characterEncodingFilter
/*
default
*.js
default
*.css
default
*.jpg
```
- 在 spring.xml 中配置 MyBatis 和 Spring 的整合。
```xml
```
- config.xml 配置一些 MyBatis 辅助信息,比如打印 SQL 等。
```xml
```
- 配置 springmvc.xml
```xml
```
- 实体类
```java
package com.southwind.entity;
import lombok.Data;
@Data
public class User {
private long id;
private String name;
private String password;
private double score;
}
```
- UserRepository
```java
package com.southwind.repository;
import com.southwind.entity.User;
import java.util.List;
public interface UserRepository {
public List findAll();
}
```
- UserRepository.xml
```xml
```
- UserService
```java
package com.southwind.service;
import com.southwind.entity.User;
import java.util.List;
public interface UserService {
public List findAll();
}
```
- UserServiceImpl
```java
package com.southwind.service.impl;
import com.southwind.entity.User;
import com.southwind.repository.UserRepository;
import com.southwind.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public List findAll() {
return userRepository.findAll();
}
}
```
- UserHandler
```java
package com.southwind.controller;
import com.southwind.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/user")
public class UserHandler {
@Autowired
private UserService userService;
@GetMapping("/findAll")
public ModelAndView findAll(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
modelAndView.addObject("list",userService.findAll());
return modelAndView;
}
}
```