【SSM整合】SpringMVC + Spring + Mybatis整合详细教程
创始人
2024-03-21 09:52:44
0

前言

在这里插入图片描述

本文为 SpringMVC + Spring + Mybatis整合教程 相关详细介绍,从数据库数据准备相关依赖包添加创建项目基本结构和配置框架,到Mybatis层的编写Spring层的编写SpringMVC层的编写,再到前端页面编写等,最后进行运行与测试,按步骤对SSM框架整合进行详细的解析~

📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)


目录

文章标题

  • 前言
  • 目录
  • 一、数据库数据准备
  • 二、添加相关依赖包
  • 三、创建项目基本结构和配置框架
  • 四、Mybatis层的编写
  • 五、Spring层的编写
  • 六、SpringMVC层的编写
  • 七、前端页面编写
  • 八、运行与测试
  • 后记

在这里插入图片描述

一、数据库数据准备

运行以下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:

 junitjunit4.12mysqlmysql-connector-java8.0.20com.mchangec3p00.9.5.2javax.servletservlet-api2.5javax.servlet.jspjsp-api2.2javax.servletjstl1.2org.mybatismybatis3.5.2org.mybatismybatis-spring2.0.2org.springframeworkspring-webmvc5.1.9.RELEASEorg.springframeworkspring-jdbc5.1.9.RELEASEorg.projectlomboklombok1.18.4

🍀进行Maven资源过滤设置

pom.xml:

src/main/java**/*.properties**/*.xmlfalsesrc/main/resources**/*.properties**/*.xmlfalse

三、创建项目基本结构和配置框架

  • com.pojo
  • com.dao
  • com.service
  • com.controller

在这里插入图片描述

四、Mybatis层的编写

🍀(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层的编写

🍀编写Spring整合Mybatis的相关的配置文件

配置Spring整合MyBatis,我们这里数据源使用c3p0连接池。

spring-dao.xml:




🍀编写Spring整合service层的相关配置文件

spring-service.xml:




spring就是一个容器,作用是用来管理其它东西。

六、SpringMVC层的编写

🍀配置web.xmlspring-mvc.xml配置文件

web.xml:


DispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:config/applicationContext.xml1DispatcherServlet/encodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingutf-8encodingFilter/*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" %>

用户列表


用户列表

序号用户名称用户性别用户电话操作
${user.getUserId()}${user.getUserName()}${user.getSex()==0?"男":"女"}${user.getTel()}详情 |更改 |删除

🍀(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" %>

修改用户


修改用户

用户名称:


用户性别:users.getSex()==0?"checked":""} >男users.getSex()!=0?"checked":""} >女


用户电话:


用户邮箱:


🍀(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全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...