前言:
Spring、SpringMVC、MyBatis三个轻量级框架各自具有不同的功能。
Spring:提供了 IoC(控制反转)和 AOP(面向切面编程)功能,帮助管理对象的生命周期和依赖关系。
SpringMVC:采用 MVC(模型-视图-控制器)设计模式,将请求处理、业务逻辑和视图渲染分离。它可以处理 HTTP 请求,支持 RESTful 风格的接口,适合构建 Web 应用。
MyBatis:简化了数据库操作,使用 XML 或注解方式定义 SQL 语句,与 Java 对象进行映射。相比于 Hibernate,MyBatis 提供了更大的 SQL 控制灵活性,适合复杂查询。
简单来说:对于一个web项目,我们可以让SpringMVC负责表现层,MyBatis负责数据持久层,而Spring负责管理SpringMVC和MyBatis相关对象的创建和依赖注入。尽管他们作用在不同层面上,但也需要协同工作,例如:SpringMVC处理JSP到handler,handler调用service,service调用Repository,而Repository就需要MyBatis所以他们直接存在关联。他们各自负责一部分,整合起来就是一个完整的ssm框架。但是整合的时候对于数量众多的配置文件,和各种不同的配置方式也是非常麻烦,接下来教给大家一个清晰明白的配置,分门别类的配置不同的xml文件。
1.创建Maven工程(Web项目项目工程目录如图)
2.在pom.xml分别导入相关依赖
<dependencies>
<!--spring配置依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>6.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>6.1.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.1.10</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.22</version>
</dependency>
<!-- SpringMVC配置依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
</dependency>
<!--Mybatis配置依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!--Mybatis整合spring 依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.3</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.22</version>
</dependency>
</dependencies>
注意:如果你把MyBatis 映射文件定义在了类路径中还需要在pom.xml中添加资源配置,否则在IDEA中xml文件将无法读取
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
在ssm中由于SpringMVC是Spring的一个子模块所以在整合的时候只需要整合Spring和MyBatis即可。
3.导入数据库配置文件
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=123456
4.分别创建三个框架的配置文件,在Sping.xml中整合MyBatis
4.1Spring.xml整合了MyBatis(相关功能详看注释)
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--MyBatis整合Spring-->
<!--配置数据源-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--配置Mybatis SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:com/easthome/mapper/*.xml"/>
<property name="configLocation" value="classpath:MybatisConfig.xml"/>
</bean>
<!--扫描Mapper接口-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.easthome.mapper"/>
</bean>
</beans>
4.2SpringMVC.xml(如果使用JSP可自行加入配置视图解析器)
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--扫描注解-->
<context:component-scan base-package="com.easthome"/>
<!--静态资源过滤-->
<mvc:default-servlet-handler/>
<!--开启注解-->
<mvc:annotation-driven/>
</beans>
4.3MyBatisConfig.xml(MyBatis相关配置大部分已经在整合Spring的配置文件中配置完成,我们可以在该配置文件中配置一些MyBatis其他辅助信息,不用配置也可以根据需要)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--起别名-->
<typeAliases>
<package name="com.easthome.pojo"/>
</typeAliases>
</configuration>
5.配置Web.xml(启动web项目时会读取相关配置文件)
<?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">
<!-- 配置spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:Spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置springmvc -->
<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:SpringMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- 配置全局过滤的filter-->
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
以上就是ssm整合的所有配置文件,接下来进行项目工程的搭建
6.项目工程搭建
6.1创建实体类
package com.easthome.pojo;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private String pwd;
}
6.2在mapper包下创建mapper接口
package com.easthome.mapper;
import com.easthome.pojo.User;
import java.util.List;
public interface LoginMapper {
public List<User> login();
}
6.3创建接口的映射文件
在创建文件之前需要注意一点,如果在resources资源文件中创建该映射文件需要在该文件夹下创建与mapper接口相同的目录结果,这样在编译时会把接口和配置文件放到同一个目录中,否则可能会报错,错误原因就是如果当我们创建多个映射文件的时候,我们在MyBatis核心配置文件配置映射文件的时候往往使用package标签
<mappers>
<!-- <mapper resource="com/easthome/mapper/UserMapper.xml"/>-->
<package name="com.easthome"/>
</mappers>
这时如果不创建相同目录的话一定会报错。
编译时在同一目录
6.4创建Service层接口和实现类
public interface LoginService {
public List<User> login();
}
@Service
public class LoginServiceImpl implements LoginService {
@Autowired
private LoginMapper loginMapper;
@Override
public List<User> login() {
return loginMapper.login();
}
}
6.5创建Controller层
@RestController
public class LoginController {
@Autowired
private LoginService loginService;
@RequestMapping("/login")
public User login(@RequestBody User user){
System.out.println(user);
return user;
}
@GetMapping("/login")
public List<User> login(){
System.out.println(loginService.login());
return loginService.login();
}
}
6.6数据库
CREATE DATABASE `mybatis`;
USE `mybatis`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT(20) NOT NULL,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user`(`id`,`name`,`pwd`) VALUES (1,'阿渌','123456'),(2,'张三','abcdef'),(3,'李四','987654');
6.7最后通过Postman测试j接口就通过啦!!!
通过上述步骤就可以整合Spring,SpringMVC以及MyBatis啦!!!