【SSM整合】SpringMVC + Spring + Mybatis整合详细教程
作者:mmseoamin日期:2023-12-11

前言

在这里插入图片描述

本文为 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:

     
            
            
                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
            
        
    
    

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

    • 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;
          }
          @Override
          public List queryAll() {
              return usersMapper.queryAll();
          }
          @Override
          public Users queryById(int id) {
              return usersMapper.queryById(id);
          }
          @Override
          public int addUser(Users users) {
              users.setStatus("0");
              return usersMapper.addUser(users);
          }
          @Override
          public int updateUser(Users users) {
              return usersMapper.updateUser(users);
          }
          @Override
          public 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.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" %>
      
      
          用户列表
          
          
          
      
      
      

      用户列表

      序号 用户名称 用户性别 用户电话 操作
      ${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全栈学习技术清单~

      👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~