SSM整合


前言

虽然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等。具体代码如下:

<!-- 配置SpringMVCDispatcherServlet -->
<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>

<!-- 配置MyBatisSqlSessionFactory -->
<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&amp;characterEncoding=utf-8&amp;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&amp;characterEncoding=utf-8&amp;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开发,提高开发效率和代码的质量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值