当前位置: 首页 > web >正文

SSM框架(Spring + Spring MVC + MyBatis)整合配置的详细步骤

以下是 SSM框架(Spring + Spring MVC + MyBatis)整合配置的详细步骤,适用于 Maven 项目。


(一)、pom.xml中添加相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>hirain-reader</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><repositories><!--创建私服地址--><repository><id>aliyun</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.30</version></dependency><!--freemarker--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>5.3.30</version></dependency><!--Jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.17.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.17.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.17.2</version></dependency><!--MyBatis--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.30</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.7</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><!--单元测试依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.30</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency></dependencies></project>

(二)、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
<!--配置DispatcherServlet--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
<!--解决中文乱码--><filter><filter-name>characterFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>characterFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

(三)、配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd
"><!--开启SpringMVC注解模式--><context:component-scan base-package="com.hirain"/><mvc:annotation-driven><!--解决响应中文乱码问题--><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=utf-8</value><!--Json序列化输出配置--><value>application/json;charset=utf-8</value></list></property></bean></mvc:message-converters></mvc:annotation-driven><mvc:default-servlet-handler/><!--配置FreeMarker模板引擎--><bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"><property name="templateLoaderPath" value="/WEB-INF/ftl"/><property name="freemarkerSettings"><props><prop key="defaultEncoding">UTF-8</prop></props></property></bean><bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"><property name="contentType" value="text/html;charset=utf-8"/><property name="suffix" value=".ftl"/></bean><!--Mybatis与Spring的整合配置--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="url"value="jdbc:mysql://localhost:3306/hirain_reader?useUnicode=true&amp;charactorEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai"/><property name="username" value="root"/><property name="password" value="root"/><property name="initialSize" value="10"/><property name="maxActive" value="20"/></bean><bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:mappers/*.xml"/><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!--配置Mapper扫描器--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.hirain.reader.mapper"/></bean>
</beans>

(四)、 mybatis-config.xml(MyBatis全局配置)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings><!-- 开启驼峰命名转换 --><setting name="mapUnderscoreToCamelCase" value="true"/></settings>
</configuration>

(五)、项目结构

src/main/java
├── com.hirain.reader.controller      # Controller层
├── com.hirain.reader.service         # Service层(接口+实现类)
├── com.hirain.reader.dao             # DAO层(MyBatis Mapper接口)
├── com.hirain.reader.mapper          # mapper接口
src/main/resources
├── mybatis-config.xml          # MyBatis全局配置(可选)
├── mappers/*.xml                # MyBatis SQL映射文件
├── applicationContext.xml  # Spring核心配置
├──db.properties               # 数据库连接配置webapp
├── WEB-INF
│   └── web.xml              # Web部署描述文件
│   └──ftl                        # ftl模板文件夹
│   │   └──test.ftl                        #测试文件
└── static                      # 静态资源(CSS/JS/图片)

(六)、测试Mybatis整合是否成功

1、在mapper包下创建TestMapper接口

package com.hirain.reader.mapper;public interface TestMapper {public void insert();
}

2、创建TestService

package com.hirain.reader.service;import com.hirain.reader.mapper.TestMapper;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
public class TestService {@Resourceprivate TestMapper testMapper;public void batchInsert(){for (int i = 0; i < 10; i++) {testMapper.insert();}System.out.println("数据导入成功!");}
}

3、resources\mappers下创建TestMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.hirain.reader.mapper.TestMapper"><insert id="insert">INSERT INTO test (content) VALUES ('sn123456')</insert>
</mapper>

4、为TestService 生成测试类并运行

package com.hirain.reader.service;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;import static org.junit.Assert.*;@RunWith(SpringJUnit4ClassRunner.class) // 使用 Spring 的测试运行器
@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) // 加载 Spring 配置文件
public class TestServiceTest {@Resourceprivate TestService testService;@Testpublic void batchInsert() {testService.batchInsert();}
}

(七)、测试freemarker是否整合成功

1、test.ftl代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
测试页面
</body>
</html>

2、创建TestController

package com.hirain.reader.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;import java.util.HashMap;
import java.util.Map;@Controller
@RequestMapping("/test")
public class TestController {@GetMapping("/t1")public ModelAndView test1(){return new ModelAndView("test");}@GetMapping("/t2")@ResponseBodypublic Map test2(){Map result=new HashMap<String,String>();result.put("message", "成功");return result;}
}

3、启动tomcat,浏览器中分别输入“http://localhost:8080/test/t1”和“http://localhost:8080/test/t2”进行测试

http://www.xdnf.cn/news/4737.html

相关文章:

  • Arm核的Ubuntu系统上安装Wireshark
  • MySQL如何进行调优
  • AquaCrop 模型新视角:多技术助力农业精准水管理
  • 室内定位误差分布评估到底该用累计误差还是混淆矩阵?
  • 复刻低成本机械臂 SO-ARM100 单关节控制(附代码)
  • STM32+安信可Ai-WB2-12F连接阿里云物联网平台
  • Google AI版图:解析AI Studio, Gemini, NotebookLM与GCP
  • 15 个 Azure DevOps 场景化面试问题及解答
  • WTK6900C-48L:离线语音芯片重构玩具DNA,从“按键操控”到“声控陪伴”的交互跃迁
  • 用uniapp在微信小程序实现画板(电子签名)功能,使用canvas实现功能
  • Android 数据持久化之 文件存储
  • SpringBoot整合PDF导出功能
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.1 业务场景与数据准备
  • Wireshark基本使用
  • $SYNT 迈入新时代:治理门户更新 + 通胀提案发布
  • [机器学习介绍与定义]机器学习-part1
  • 删除链表倒数第N个节点
  • 什么是变量提升?(形象的比喻)
  • 【AI入门】CherryStudio入门4:创建知识库,对接思源笔记
  • Spring Boot 实现验证码生成与校验:从零开始构建安全登录系统
  • Linux Shell编程之条件语句
  • Jquery ajax 提交序列化或JSON数据到后台
  • 前端缓存踩坑指南:如何优雅地解决浏览器缓存问题?
  • CKESC STONE 80A-MC 电调的全场景可靠性技术测评
  • 从零打造个人博客静态页面与TodoList应用:前端开发实战指南
  • Maven
  • AI CUBE 使用指南 目标检测格式范例 AI cube 报错数据集不合规范,请清洗数据集
  • 在Hugging Face网站像Github一样克隆repository到本地的具体步骤
  • 【数据结构】——链表OJ(下)
  • 丝路传说手游:职业选择与高难度BOSS突破指南