文章目录
- 前言
- 一、使用步骤
- 1.引入库
- 2.建表
- 3 项目结构
- 4 web.xml的配置
- 5 配置数据源
- 6 SpringMVC配置
- 7 配置MyBatis Mapper
- 8 书写控制类
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
SSM整合是指Spring、SpringMVC和MyBatis这三个框架的整合使用。它们分别是Java企业级开发中常用的三个框架,通过整合使用可以实现更加高效、灵活和可维护的开发。
具体来说,SSM整合的步骤如下:
- 配置Spring:在Spring的配置文件中定义Bean,配置数据源、事务管理器等。
- 配置SpringMVC:在SpringMVC的配置文件中配置视图解析器、处理器映射器等。
- 配置MyBatis:在MyBatis的配置文件中配置数据源、Mapper扫描等。
- 整合Spring和MyBatis:通过Spring的配置文件中配置MyBatis的SqlSessionFactoryBean,将MyBatis与Spring整合。
- 整合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 Transfer
Source Server : RpWn
Source Server Type : MySQL
Source Server Version : 50735 (5.7.35)
Source Host : localhost:3306
Source Schema : demo
Target Server Type : MySQL
Target Server Version : 50735 (5.7.35)
File Encoding : 65001
Date: 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;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setUrl(url);
dataSource.setDriverClassName(driver);
return dataSource;
}
/**
* 事务管理器
*
* @param dataSource
* @return
*/
@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public 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 {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{DbConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[0];
}
@Override
protected 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
其余的配置与单独使用时基本一致。