文章目录
前言
虽然SSM(Spring+Spring MVC+MyBatis)框架在一些新兴的技术中可能已经落后,但是学习SSM框架可以帮助你理解和掌握传统的Java Web开发方式,为将来的工作提供基础和经验积累。同时,学习SSM框架也能够帮助你更好地理解和掌握新兴的技术,比如Spring Boot和Spring Cloud等,因为这些新技术通常是基于SSM框架的经验和思想进行发展和演进的。
一、SSM整合的基本概念
SSM是指Spring+SpringMVC+MyBatis的整合,是目前JavaWeb开发中最为流行的一种框架组合。其中,Spring是一个轻量级的IoC和AOP容器框架,可以降低Java开发的复杂度;SpringMVC是Spring框架的一个子模块,它是一个基于MVC架构的Web框架,可以帮助我们更加方便地实现Web开发;MyBatis是一个开源的持久化框架,它可以将Java对象和关系型数据库之间进行映射,从而降低数据库操作的复杂度。。
二、SSM整合的实现步骤
1、创建Maven项目
首先,我们需要创建一个Maven项目,选择Web应用模板,并选择相应的依赖,如Spring、SpringMVC和MyBatis等。这里我们以IntelliJ IDEA为例,创建Maven项目。
2、配置XML文件
刚刚创建的maven项目中XML文件是2.0版本的,我们需要进入项目结构修改版本到4.0,然后在web.xml文件中配置SpringMVC的DispatcherServlet,以及配置Spring的监听器和MyBatis的SqlSessionFactory等。具体代码如下:
<!-- 配置SpringMVC的DispatcherServlet -->
<servlet>
<servlet-name>springMvcServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置Spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置MyBatis的SqlSessionFactory -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<servlet-mapping>
<servlet-name>springMvcServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、配置Spring配置文件
创建Spring的配置文件,如applicationContext.xml,配置Spring的IoC容器和AOP等相关内容。具体代码如下:
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm_demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- 配置Mapper扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 开启组件扫描 -->
<context:component-scan base-package="com.example.service"/>
4、配置SpringMVC配置文件
创建SpringMVC的配置文件,如springmvc-servlet.xml,配置SpringMVC的ViewResolver、HandlerMapping等相关内容。具体代码如下:
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 配置静态资源访问 -->
<mvc:resources mapping="/resources/**" location="/resources/"/>
<!-- 配置HandlerMapping -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!-- 配置HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
5、配置MyBatis配置文件
创建MyBatis的配置文件,如mybatis-config.xml,配置MyBatis的数据源、Mapper映射文件等相关内容。具体代码如下:
<!-- 配置数据源 -->
<dataSource type="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm_demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
<!-- 配置Mapper映射文件 -->
<mappers>
<mapper resource="com/example/dao/UserMapper.xml"/>
</mappers>
6、创建Mapper映射文件
在MyBatis的配置文件中,需要配置Mapper映射文件,用于将Java对象和数据库表之间进行映射。具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.dao.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.example.entity.User">
select * from user where id=#{id}
</select>
<insert id="addUser" parameterType="com.example.entity.User">
insert into user (name, age, gender) values (#{name}, #{age}, #{gender})
</insert>
</mapper>
7、创建JavaBean和Controlle
创建JavaBean和Controller类,用于实现业务逻辑和与前端的交互。具体代码如下:
// User.java
public class User {
private int id;
private String name;
private int age;
private String gender;
// getter and setter
}
// UserMapper.java
public interface UserMapper {
User getUserById(int id);
void addUser(User user);
}
// UserService.java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(int id) {
return userMapper.getUserById(id);
}
public void addUser(User user) {
userMapper.addUser(user);
}
}
// UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getUserById")
@ResponseBody
public User getUserById(int id) {
return userService.getUserById(id);
}
@RequestMapping("/addUser")
@ResponseBody
public String addUser(User user) {
userService.addUser(user);
return "success";
}
}
8、测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml", "classpath:springmvc-servlet.xml"})
public class UserControllerTest {
@Autowired
private UserController userController;
@Test
public void getUserById() {
User user = userController.getUserById(1);
System.out.println(user.getName());
}
@Test
public void addUser() {
User user = new User();
user.setName("test");
user.setAge(18);
user.setGender("male");
userController.addUser(user);
}
}
总结
SSM整合的优势:SSM整合可以提高开发效率、简化配置、提高可维护性和性能等方面的优势。具体来说,它可以将业务逻辑和数据访问层分离,降低JavaWeb开发的复杂度,提高代码的可维护性和可扩展性,同时使用了Spring的IoC容器和AOP技术,可以提高代码的性能和可靠性。SSM整合是目前JavaWeb开发中最为流行的框架组合之一,它可以帮助我们更加方便地实现Web开发,提高开发效率和代码的质量。