引言

  • 进行SSM(Spring+SpringMVC+MyBatis)集成的主要原因是为了提高开发效率和代码可维护性。SSM是一套非常流行的Java Web开发框架,它集成了Spring框架、SpringMVC框架和MyBatis框架,各自发挥优势,形成了一个完整的开发框架。
  • 首先,使用Spring框架可以实现组件的解耦和依赖注入,通过配置文件进行Bean的管理和控制反转(IoC),从而提供了良好的扩展性和灵活性。Spring提供了事务管理、AOP(面向切面编程)等功能,使得开发者可以更加方便地进行业务逻辑的编写和管理。
  • 其次,SpringMVC框架是一种基于MVC(Model-View-Controller)模式的Web框架,它通过DispatcherServlet来统一管理请求和响应。SpringMVC提供了请求处理的注解方式,可以简化开发流程,同时具备良好的可扩展性和灵活性。开发者可以通过配置文件进行路由、参数绑定、数据校验等操作,从而编写出结构清晰、易于维护的代码。
  • 最后,MyBatis是一款优秀的持久层框架,它通过XML文件或注解来实现数据库操作的映射,具有简单易用、性能高效等特点。MyBatis提供了丰富的CRUD(增删改查)操作和事务管理功能,开发者可以灵活地编写数据库相关的代码。

综上所述,SSM集成可以充分发挥各个框架的优势,提供了一种高效、灵活、易于维护的开发方式,使得Java Web开发更加方便和高效。通过SSM的集成,开发者可以快速搭建起一个稳定可靠的Web应用,并且在后续的开发和维护过程中,能够更加方便地处理业务需求和数据库操作。

创建数据库表

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0; -- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user`  (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  `age` int(11) NULL DEFAULT NULL,  `gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;

在IEDA中创建Maven Web项目

选择File —> New —> Project

选择Maven模板

填写项目的基本信息 —> Next

配置自己的Maven环境 —> Finish

修改pom.xml配置,添加Maven依赖

    UTF-8    8    8    5.3.6                  org.springframework      spring-webmvc      ${spring.version}              org.springframework      spring-jdbc      ${spring.version}              org.projectlombok      lombok      1.16.18                  javax.servlet      jstl      1.2      runtime              taglibs      standard      1.1.2                  javax.validation      validation-api      2.0.1.Final              org.hibernate.validator      hibernate-validator      6.0.16.Final                  commons-fileupload      commons-fileupload      1.4              commons-io      commons-io      2.6                  com.fasterxml.jackson.core      jackson-core      2.11.4              com.fasterxml.jackson.core      jackson-databind      2.11.4                  org.mybatis      mybatis      3.5.5              org.mybatis      mybatis-spring      2.0.5                  mysql      mysql-connector-java      5.1.47                  org.slf4j      slf4j-api      1.7.25                  ch.qos.logback      logback-classic      1.2.3      

创建IoC 容器 springmvc.xml文件

在src/main/resources文件夹下创建 springmvc.xml文件

                                            

创建数据库配置文件database.properties

在src/main/resources文件夹下创建database.properties文件

db.driver=com.mysql.jdbc.Driverdb.url=jdbc:mysql://localhost:3306/spring_mybatis?useSSL=falsedb.username=rootdb.password=123456

创建Spring IoC容器spring-config.xml文件

在src/main/resources文件夹下创建spring-config.xml文件

                                                                                                                        

创建logback.xml日志配置文件

在src/main/resources文件夹下创建logback.xml文件

    logback                                DEBUG                            %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n                                        ${log.path}                    ${log.path}.%d{yyyy-MM-dd}.zip                            %date %level [%thread] %logger{36} [%file : %line] %msg%n                                                            

修改web.xml文件

        contextConfigLocation    classpath:spring-config.xml          org.springframework.web.context.ContextLoaderListener        springmvc    org.springframework.web.servlet.DispatcherServlet                contextConfigLocation      classpath:springmvc.xml            1        springmvc    /          characterEncodingFilter    org.springframework.web.filter.CharacterEncodingFilter          encoding      UTF-8              forceEncoding      true            characterEncodingFilter    /*  

创建UserEntity实体类

在src/main/java目录下创建com.qrj.entity包,在包下面创建UserEntity实体类。

package com.qrj.entity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/** * @author: qrj * @description 用户实体类 * @Date: 2023/9/19 14:51 */@Data@AllArgsConstructor@NoArgsConstructorpublic class UserEntity {    private Integer id;    private String name;    private Integer age;    private String gender;}

创建UserDto参数类

在src/main/java目录下创建com.qrj.dto包,在包下面创建UserDto参数类。

package com.qrj.dto;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/** * @author: qrj * @description 用户参数 * @Date: 2023/9/19 14:52 */@Data@AllArgsConstructor@NoArgsConstructorpublic class UserDto {    private Integer id;    private String name;    private Integer age;    private String gender;}

创建UserMapper接口

在src/main/java目录下创建com.qrj.dao包,在包下面创建UserMapper接口。

package com.qrj.dao;import com.qrj.dto.UserDto;import com.qrj.entity.UserEntity;import java.util.List;/** * @author: qrj * @description 用户映射接口 * @Date: 2023/9/19 14:52 */public interface UserMapper {    void insert(UserDto user);    List getList();}

创建UserMapper.xml映射文件

注意这里创建的UserMapper映射文件要和之前创建的UserMapper接口文件相对应。

在src/main/resources文件夹下创建mapper文件夹,并在mapper文件夹下创建UserMapper.xml映射文件。

            INSERT INTO USER ( name, age, gender )            VALUE            ( #{name}, #{age} , #{gender} )                SELECT            *        FROM            USER;    

创建ResultVo工具类

在src/main/java目录下创建com.qrj.vo包,在包下面创建ResultVo工具类。

package com.qrj.vo;import lombok.Data;import java.io.Serializable;/** * @author: qrj * @description Ajax 请求统一响应工具类 * @Date: 2023/9/19 14:58 */@Datapublic class ResultVo implements Serializable {    private static final long serialVersionUID = 1L;    //状态码    private int code;    //状态码描述    private String message;    //数据结果,泛型,可以是列表、单个对象、数字、布尔值等    private T data;    public ResultVo() {    }    public ResultVo(int code, String message) {        this.code = code;        this.message = message;    }    public static  ResultVo success(T data) {        ResultVo resultVo = new ResultVo();        resultVo.setCode(200);        resultVo.setMessage("ok");        resultVo.setData(data);        return  resultVo;    }}

创建IUserService接口和UserServiceImpl实现类

在src/main/java目录下创建com.qrj.service包,在包中创建IUserService接口

package com.qrj.service;import com.qrj.dto.UserDto;import com.qrj.entity.UserEntity;import java.util.List;/** * @author: qrj * @description 用户业务接口 * @Date: 2023/9/19 14:54 */public interface IUserService {    UserEntity insert(UserDto user);    List getList();}

在com.qrj.service包下创建Impl包,并创建UserServiceImpl实现类

package com.qrj.service.Impl;import com.qrj.dao.UserMapper;import com.qrj.dto.UserDto;import com.qrj.entity.UserEntity;import com.qrj.service.IUserService;import org.springframework.beans.BeanUtils;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;import java.util.List;/** * @author: qrj * @description 用户业务实现类 * @Date: 2023/9/19 14:57 */@Service //控制反转public class UserServiceImpl implements IUserService {    @Resource //依赖注入    private UserMapper userMapper;    @Transactional(rollbackFor = Exception.class)    @Override    public UserEntity insert(UserDto user) {        userMapper.insert(user);        UserEntity userEntity = new UserEntity();        //BeanUtils用于拷贝对象 参数1:被拷贝的对象 参数2:拷贝对象        BeanUtils.copyProperties(user,userEntity);        return userEntity;    }    @Transactional    @Override    public List getList() {        List list = userMapper.getList();        return list;    }}

创建UserController页面控制器

在src/main/java目录下创建com.qrj.controller包,在包下面创建UserController页面控制器。

package com.qrj.controller;import com.qrj.dto.UserDto;import com.qrj.entity.UserEntity;import com.qrj.service.IUserService;import com.qrj.vo.ResultVo;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import java.util.List;/** * @author: qrj * @description 用户页面控制器 * @Date: 2023/9/19 14:53 */@RestController@Slf4j //lombok提供的日志注解public class UserController {    @Resource //使用 @Autowired注解 IDEA不推荐    private IUserService userService;    @PostMapping("/user")    public ResultVo addUser(@RequestBody UserDto userDto) {        log.debug(userDto.toString()); //打印调试日志(接收参数)        UserEntity result = userService.insert(userDto);        log.debug(result.toString()); //打印调试日志(响应数据)        return ResultVo.success(result);    }    @GetMapping("/users")    public ResultVo<List> getUsers() {        List list = userService.getList();        return ResultVo.success(list);    }}

启动Tomcat,在Postman下进行接口测试

通过Restful API接口(”/user”)测试添加用户功能实现

通过Restful API接口(”/users”)测试查找所有用户功能实现

以上功能测试完成,至此SSM框架集成成功!