本文为 SpringMVC + Spring + Mybatis整合教程 相关详细介绍,从数据库数据准备
、相关依赖包添加
、创建项目基本结构和配置框架
,到Mybatis层的编写
、Spring层的编写
、SpringMVC层的编写
,再到前端页面编写
等,最后进行运行与测试
,按步骤对SSM框架整合进行详细的解析~
📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)
运行以下sql脚本:
CREATE DATABASE `ssm`;
USE `ssm`;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `ssm`.`users` (`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',`sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别,0男,1女',`tel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系电话',`mail` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮件',`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态,0正常,1禁用',PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
INSERT INTO `users`(`user_name`, `sex`, `tel`, `mail`, `status`) VALUES
('admin', '0', '123456', '', '0'),
('user1', '0', '123456', '', '0');
创建一个名为ssm的数据库,并在此数据库中创建users数据表,表中包含的属性:“用户名”,“性别”,“联系电话”,“邮件”,“状态”。
🍀新建一个Maven项目(名称叫ssm-user),并添加web支持后,添加以下pom依赖。
pom.xml:
junit junit 4.12 mysql mysql-connector-java 8.0.20 com.mchange c3p0 0.9.5.2 javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.2 javax.servlet jstl 1.2 org.mybatis mybatis 3.5.2 org.mybatis mybatis-spring 2.0.2 org.springframework spring-webmvc 5.1.9.RELEASE org.springframework spring-jdbc 5.1.9.RELEASE org.projectlombok lombok 1.18.4
🍀进行Maven资源过滤设置
pom.xml:
src/main/java **/*.properties **/*.xml false src/main/resources **/*.properties **/*.xml false
🍀(1)添加数据库配置文件 database.properties,方便管理
database.properties:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1/ssm?serverTimezone=UTC&&useUnicode=true&&characterEncoding=utf8&&useSSL=false
jdbc.username=root
jdbc.password=root
🍀(2)添加实体Users,使用lombok来创建get/set方法
Users.java:
package com.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/*** 用户实体类*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Users {private Integer userId;private String userName;private String sex;private String tel;private String mail;private String status;
}
🍀(3)编写Dao层的 Mapper 接口
UsersMapper.java:
package com.dao;
import com.pojo.Users;
import java.util.List;
/*** 用户 mapper*/
public interface UsersMapper {/*** 查询所有用户*/List queryAll();/*** 根据ID查询用户*/Users queryById(int id);/*** 添加用户*/int addUser(Users users);/*** 修改用户*/int updateUser(Users users);/*** 根据ID删除用户*/int deleteById(int id);
}
🍀(4)编写接口对应的 Mapper.xml 文件
UsersMapper.xml:
INSERT INTO `users`(`user_name`, `sex`, `tel`, `mail`, `status`)VALUES(#{userName}, #{sex}, #{tel}, #{mail}, #{status}) UPDATE `users` SET`user_name` = #{userName},`sex` = #{sex},`tel` = #{tel},`mail` = #{mail}WHERE `user_id` = #{userId} delete from users where user_id=#{userId}
🍀(5)编写Service层的接口和实现类
UsersService.java:
package com.service;
import com.pojo.Users;
import java.util.List;
public interface UsersService {/*** 查询所有用户*/List queryAll();/*** 根据ID查询用户*/Users queryById(int id);/*** 添加用户*/int addUser(Users users);/*** 修改用户*/int updateUser(Users users);/*** 根据ID删除用户*/int deleteById(int id);
}
UsersServiceImpl.java:
package com.service.impl;
import com.dao.UsersMapper;
import com.pojo.Users;
import com.service.UsersService;
import java.util.List;
public class UsersServiceImpl implements UsersService {//调用dao层的操作,设置一个set接口,方便Spring管理private UsersMapper usersMapper;public void setUsersMapper(UsersMapper usersMapper) {this.usersMapper = usersMapper;}@Overridepublic List queryAll() {return usersMapper.queryAll();}@Overridepublic Users queryById(int id) {return usersMapper.queryById(id);}@Overridepublic int addUser(Users users) {users.setStatus("0");return usersMapper.addUser(users);}@Overridepublic int updateUser(Users users) {return usersMapper.updateUser(users);}@Overridepublic int deleteById(int id) {return usersMapper.deleteById(id);}
}
🍀编写Spring整合Mybatis的相关的配置文件
配置Spring整合MyBatis,我们这里数据源使用c3p0连接池。
spring-dao.xml:
🍀编写Spring整合service层的相关配置文件
spring-service.xml:
spring就是一个容器,作用是用来管理其它东西。
🍀配置web.xml与spring-mvc.xml配置文件
web.xml:
DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:config/applicationContext.xml 1 DispatcherServlet / encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encodingFilter /* 15
spring-mvc.xml:
🍀编写Controller层
UsersController.java:
package com.controller;
import com.pojo.Users;
import com.service.UsersService;
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("/users")
public class UsersController {@Autowired@Qualifier("UsersServiceImpl")private UsersService usersService;/*** 查询所有用户*/@RequestMapping("/all")public String list(Model model) {List list = usersService.queryAll();model.addAttribute("list", list);return "users/allUsers";}/*** 根据ID查询用户*/@RequestMapping("/{id}")public String queryById(@PathVariable int id,Model model) {model.addAttribute("users",usersService.queryById(id));return "users/info";}/*** 去添加用户页面*/@RequestMapping("/toAdd")public String toAddUser() {return "users/add";}/*** 添加用户*/@RequestMapping("/add")public String addUser(Users users) {usersService.addUser(users);return "redirect:/users/all";}/*** 去修改页面* @return*/@RequestMapping("/toUpdate")public String toUpdateUser(int id,Model model) {model.addAttribute("users",usersService.queryById(id));return "users/update";}/*** 修改用户*/@RequestMapping("/update")public String updateUser(Users users) {usersService.updateUser(users);return "redirect:/users/all";}/*** 根据ID删除用户*/@RequestMapping("/del/{id}")public String deleteById(@PathVariable int id) {usersService.deleteById(id);return "redirect:/users/all";}
}
🍀(1)首页: index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
首页
点击进入列表页
🍀(2)用户列表页面:allUser.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
用户列表
🍀(3)添加用户页面:add.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
新增用户
新增用户
🍀(4)修改用户页面:update.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
修改用户
修改用户
🍀(5)用户详情页面:info.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
详情信息
详情信息
用户名称:${users.getUserName()}
用户性别:${users.getSex()==0?"男":"女"}
用户电话:${users.getTel()}
用户邮箱:${users.getMail()}
用户状态:${users.getStatus()==0?"正常":"禁用"}
返回
项目的整体结构如下:
SSM项目整合已经完全的OK,整个项目构建完毕,配置Tomcat就可以运行进行测试!
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~