SSM整合----第一个SSM项目

文章目录

  • 前言
  • 一、使用步骤
    • 1.引入库
    • 2.建表
    • 3 项目结构
    • 4 web.xml的配置
    • 5 配置数据源
    • 6 SpringMVC配置
    • 7 配置MyBatis Mapper
    • 8 书写控制类
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

SSM整合是指Spring、SpringMVC和MyBatis这三个框架的整合使用。它们分别是Java企业级开发中常用的三个框架,通过整合使用可以实现更加高效、灵活和可维护的开发。

具体来说,SSM整合的步骤如下:

  1. 配置Spring:在Spring的配置文件中定义Bean,配置数据源、事务管理器等。
  2. 配置SpringMVC:在SpringMVC的配置文件中配置视图解析器、处理器映射器等。
  3. 配置MyBatis:在MyBatis的配置文件中配置数据源、Mapper扫描等。
  4. 整合Spring和MyBatis:通过Spring的配置文件中配置MyBatis的SqlSessionFactoryBean,将MyBatis与Spring整合。
  5. 整合SpringMVC和Spring:在SpringMVC的配置文件中配置Spring的上下文,将SpringMVC与Spring整合。

整合完成后,可以在Spring中管理MyBatis的Mapper,并且在SpringMVC中使用注解方式进行请求处理。这样可以充分发挥三个框架的优势,提高开发效率和代码质量。


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用步骤

1.引入库

在pom文件中添加以下依赖项,代码如下(示例):

        <!--mybatis spring 桥梁--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.1.2</version></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.15</version></dependency><!--引入事务管理--><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.32</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.9.1</version></dependency><!--spring mvc核心依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.32</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency>

2.建表

代码如下(示例):

/*Navicat Premium Data TransferSource Server         : RpWnSource Server Type    : MySQLSource Server Version : 50735 (5.7.35)Source Host           : localhost:3306Source Schema         : demoTarget Server Type    : MySQLTarget Server Version : 50735 (5.7.35)File Encoding         : 65001Date: 07/04/2024 14:53:54
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for userinfo
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo`  (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`state` int(11) NULL DEFAULT 1,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES (1, 'root', 'root', 1);
INSERT INTO `userinfo` VALUES (2, 'admin', 'admin', 1);
INSERT INTO `userinfo` VALUES (3, 'pyy', '123', 2);
INSERT INTO `userinfo` VALUES (33, '123qwe', '123', 1);
INSERT INTO `userinfo` VALUES (34, '123', '123', 1);
INSERT INTO `userinfo` VALUES (35, '765434', '3443', 1);
INSERT INTO `userinfo` VALUES (36, '4321', '1234', 1);
INSERT INTO `userinfo` VALUES (37, 'qq123', '123', 1);
INSERT INTO `userinfo` VALUES (38, 'admin321', '123', 1);
INSERT INTO `userinfo` VALUES (42, 'setf', 'tgrd', 1);
INSERT INTO `userinfo` VALUES (43, 'ertfe', 'rdgt', 1);
INSERT INTO `userinfo` VALUES (44, '435', '345', 0);
INSERT INTO `userinfo` VALUES (45, '435', '345', 1);
INSERT INTO `userinfo` VALUES (46, 'String', 'String', 0);SET FOREIGN_KEY_CHECKS = 1;

3 项目结构

建成这样目录结构的项目
在这里插入图片描述

4 web.xml的配置

添加以下代码防止乱码

<filter><filter-name>encodingResult</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>encodingResult</filter-name><url-pattern>/*</url-pattern></filter-mapping>

5 配置数据源

在db.properties文件中书写数据库连接数据源
在DBConfig书写

@Configuration
@PropertySource("classpath:db.properties")
@EnableTransactionManagement//启用事务注解的支持
@ComponentScan("com.llf")
@MapperScan("com.llf.mapper")
@EnableWebMvc//启用mvc注解支持
public class DbConfig {@Value("${user}")String username;@Value("${password}")String password;@Value("${driver}")String driver;@Value("${url}")String url;@Beanpublic DataSource dataSource() {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setUrl(url);dataSource.setDriverClassName(driver);return dataSource;}/*** 事务管理器** @param dataSource* @return*/@Beanpublic DataSourceTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();//设置数据源factoryBean.setDataSource(dataSource);//设置别名factoryBean.setTypeAliasesPackage("com.llf.bean");//mybaits配置类org.apache.ibatis.session.Configuration cfg = new org.apache.ibatis.session.Configuration();//输出sql语句cfg.setLogImpl(StdOutImpl.class);factoryBean.setConfiguration(cfg);//设置映射文件的位置PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();//读取类路径下mybatis文件夹下  以Mapper.xml结尾的文件Resource[] resources = null;try {resources = resolver.getResources("classpath:mybatis/*Mapper.xml");} catch (IOException e) {throw new RuntimeException(e);}factoryBean.setMapperLocations(resources);try {return factoryBean.getObject();} catch (Exception e) {throw new RuntimeException(e);}}}

6 SpringMVC配置

在WebApp中书写以下代码

public class WebApp extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[]{DbConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[0];}@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}

7 配置MyBatis Mapper

在这里插入图片描述
在mapper.xml文件中书写sql语句

<mapper namespace="com.llf.mapper.UserMapper"><insert id="save">insert into userinfo(username, password, state)values (#{username}, #{password}, #{status})</insert></mapper>

8 书写控制类

写userController类用于用户请求并相应

    @PostMapping("/user")public ResultBean save(@RequestBody User user) {int rs = userService.save(user);return rs == 1 ? success("保存成功") : fail("保存失败");}

总结

SSM整合核心有以下几点:

Spring的IOC容器创建先于SpringMVC的IOC容器
SpringMVC扫描的是controller包,Spring要把其他的包扫描了,两个框架管理各自的组件
了解 ContextLoaderListener 监听器的作用,在服务器启动的时候加载Spring的配置文件
Spring配置文件代替原来的 mybatis-config.xml
其余的配置与单独使用时基本一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MTK i500p AIoT解决方案

一、方案概述 i500p是一款强大而高效的AIoT平台&#xff0c;专为便携式、家用或商用物联网应用而设计&#xff0c;这些应用通常需要大量的边缘计算&#xff0c;需要强大的多媒体功能和多任务操作系统。该平台集成了Arm Cortex-A73 和 Cortex-A53 的四核集群&#xff0c;工作频…

【论文速读】| 大语言模型平台安全:将系统评估框架应用于OpenAI的ChatGPT插件

本次分享论文为&#xff1a;LLM Platform Security: Applying a Systematic Evaluation Framework to OpenAI’s ChatGPT Plugins 基本信息 原文作者&#xff1a;Umar Iqbal, Tadayoshi Kohno, Franziska Roesner 作者单位&#xff1a;华盛顿大学圣路易斯分校&#xff0c;华盛…

web安全学习笔记(7)

记一下第十一节课的内容。 这节课主要学习post传参和js弹窗与跳转 一、post传参 1.简单的post传参介绍 将index.php重命名为login.php&#xff0c;并将login.html从template文件夹下拿到根目录下&#xff0c;并删除template目录。 将login.html中内容改为如下所示&#xf…

Ubuntu下TexStudio如何兼容中文

怎么就想起来研究一下这个&#xff1f; 我使用大名鼎鼎的3Blue1Brown数学动画引擎Manim&#xff0c;制作了一个特别小的动画视频克里金插值。在视频中&#xff0c;绘制文字时&#xff0c;Manim使用到了texlive texlive-latex-extra这些库。专业的关系&#xff0c;当年的毕设没…

一个更难破解的加密算法 Bcrypt

BCrypt是由Niels Provos和David Mazires设计的密码哈希函数&#xff0c;他是基于Blowfish密码而来的&#xff0c;并于1999年在USENIX上提出。 除了加盐来抵御rainbow table 攻击之外&#xff0c;bcrypt的一个非常重要的特征就是自适应性&#xff0c;可以保证加密的速度在一个特…

设计模式:生活中的迭代器模式

迭代器模式可以通过日常生活中的餐厅菜单遍历来类比。想象一下&#xff0c;你走进一家餐厅&#xff0c;服务员给了你一本菜单。这本菜单就像是一个聚合对象&#xff0c;它包含了各种菜品。你可以一页一页地翻阅菜单&#xff0c;这个翻阅的过程就像是使用迭代器来遍历聚合对象的…

linux学习:gcc编译

编译.c gcc hello.c -o hello 用gcc 这个工具编译 hello.c&#xff0c;并且使之生成一个二进制文件 hello。 其中 –o 的意义是 output&#xff0c;指明要生成的文件的名称&#xff0c;如果不写 –o hello 的话会生成默 认的一个 a.out 文件 获得 C 源程序经过预处理之后的文…

书生·浦语训练营二期第三次笔记-茴香豆:搭建你的 RAG 智能助理

RAG学习文档1&#xff1a; https://paragshah.medium.com/unlock-the-power-of-your-knowledge-base-with-openai-gpt-apis-db9a1138cac4 RAG学习文档2: https://blog.demir.io/hands-on-with-rag-step-by-step-guide-to-integrating-retrieval-augmented-generation-in-llms-a…

C/C++ std::list 插入时即整理顺序(ASC升序)

下面是一个随机的 packet&#xff08;帧&#xff09;插入函数&#xff0c;ASC升序&#xff0c;按 “packet_seq” 来控制成员之间的顺序&#xff0c;该函数优化了&#xff0c;倾向头、倾向尾。 即&#xff1a; 根据 packet_seq 可以得出&#xff0c;插入位置的最短距离&#x…

【JavaScript】如何在npm中切换源以及使用指定源安装依赖

忘不掉的是什么我也不知道 想不起当年模样 看也看不到 去也去不了的地方 也许那老街的腔调是属于我的忧伤 嘴角那点微笑越来越勉强 忘不掉的是什么我也不知道 放不下熟悉片段 回头望一眼 已经很多年的时间 透过手指间看着天 我又回到那老街 靠在你们身边渐行渐远 …

SpringBoot中实现阿里云验证码

要在SpringBoot中实现阿里云验证码发送&#xff0c;可以按照以下步骤进行&#xff1a; 注册阿里云账号&#xff1a;首先&#xff0c;你需要在阿里云官网注册一个账号&#xff0c;并登录到阿里云控制台。 创建短信服务&#xff1a;在阿里云控制台中&#xff0c;选择"短信服…

C#/.NET/.NET Core推荐学习书籍(24年4月更新,已分类)

前言 古人云&#xff1a;“书中自有黄金屋&#xff0c;书中自有颜如玉”&#xff0c;说明了书籍的重要性。作为程序员&#xff0c;我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍&#xff08;包含了C#、.NET、.NET Core、Linq、EF/E…

云原生安全当前的挑战与解决办法

云原生安全作为一种新兴的安全理念&#xff0c;不仅解决云计算普及带来的安全问题&#xff0c;更强调以原生的思维构建云上安全建设、部署与应用&#xff0c;推动安全与云计算深度融合。所以现在云原生安全在云安全领域越来受到重视&#xff0c;云安全厂商在这块的投入也是越来…

Stable Diffusion初级教程

一、入门篇 1. 理解基本概念 扩散模型&#xff08;Diffusion Models&#xff09;&#xff1a;扩散模型是一种生成模型&#xff0c;通过逐步添加噪声到数据样本中&#xff0c;然后学习如何逐步去除这些噪声来恢复原始数据。Latent Diffusion Model (LDM)&#xff1a;LDM是Stab…

【华为OD机试】需要打开多少监视器(贪心算法—JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

34-4 CSRF漏洞 - CSRF跨站点请求伪造

一、漏洞定义 CSRF(跨站请求伪造)是一种客户端攻击,又称为“一键式攻击”。该漏洞利用了Web应用程序与受害用户之间的信任关系,通过滥用同源策略,使受害者在不知情的情况下代表攻击者执行操作。与XSS攻击不同,XSS利用用户对特定网站的信任,而CSRF则利用了网站对用户网页…

HiveSQL如何生成连续日期剖析

HiveSQL如何生成连续日期剖析 情景假设&#xff1a; 有一结果表&#xff0c;表中有start_dt和end_dt两个字段&#xff0c;&#xff0c;想要根据开始和结束时间生成连续日期的多条数据&#xff0c;应该怎么做&#xff1f;直接上结果sql。&#xff08;为了便于演示和测试这里通过…

C++:MySQL的事务概念与使用(四)

1、事务的概念 定义&#xff1a;事务是构成单一逻辑工作单元的操作集合&#xff0c;要么完整的执行&#xff0c;要么完全不执行。无论发生何种情况&#xff0c;DBS必须保证事务能正确、完整的执行。 性质&#xff1a;事务的四大ACID性质。 原子性(Atomicity)&#xff1a;一个事…

2.网络编程-HTTP和HTTPS

目录 HTTP介绍 HTTP协议主要组成部分 GET 和 POST有什么区别 常见的 HTTP 状态码有哪些 http状态码100 HTTP1.1 和 HTTP1.0 的区别有哪些 HTTPS 和 HTTP 的区别是什么 HTTP2 和 HTTP1.1 的区别是什么 HTTP3 和 HTTP2 的区别是什么 HTTPS的请求过程 对称加密和非对称…

甘特图在生产进度管理中的应用

生产进度管理在生产制造过程中起着至关重要的作用。 它主要关注对生产进程的掌控和安排&#xff0c;确保生产活动能够按照预定的计划和时间顺利进行&#xff0c;以达到按时交付产品的目标。 在生产进度管理中&#xff0c;首先需要制定一个详细且合理的生产计划&#xff0c;明…