为了账号安全,请及时绑定邮箱和手机立即绑定

SSM入门:简洁实用的Spring+Spring MVC+MyBatis框架教程

标签:
SSM
概述

本文介绍了Spring、Spring MVC和MyBatis三个框架的组合,提供了一套完整的Java Web开发解决方案。文章详细讲解了SSM框架的优势和应用场景,并指导读者完成开发环境的搭建,包括工具安装、数据库配置与相关依赖的添加。

SSM框架简介
SSM框架的定义和组成

SSM框架是指Spring + Spring MVC + MyBatis三个开源框架的组合,提供了一套完整的Java Web开发解决方案。其主要组成部分如下:

  • Spring:是一个轻量级的企业级Java应用开发框架,旨在简化企业应用开发。
  • Spring MVC:是Spring框架的一部分,用于构建Web应用,遵循MVC(Model-View-Controller)设计模式。
  • MyBatis:是一个优秀的持久层框架,简化了数据库操作,提供了一种简单的方式来操作数据库,可以避免显式使用SQL语句和手工建造SQL语句。
SSM框架的优势和应用场景

SSM框架的优势包括:

  • 松耦合性:各部分之间相对独立,模块化程度高。
  • 易于维护:配置灵活,方便扩展和升级。
  • 丰富的功能:支持AOP,事务管理,安全等企业级应用的重要特性。
  • 强大的数据库操作:MyBatis提供了强大的SQL映射功能。

SSM框架的应用场景包括但不限于:

  • 企业级应用开发:如电商平台、OA系统等。
  • 数据驱动的业务逻辑处理:需要频繁操作数据库的应用。
  • Web应用程序:需要处理大量的HTTP请求,响应速度要求高的应用。
开发环境搭建
开发工具的选择与安装

开发工具主要选择IDEA或Eclipse。它们都提供了丰富的开发工具支持,例如代码编辑、调试、版本控制等。

安装步骤:

  1. 访问官网下载对应版本的IDEA或Eclipse。
  2. 安装到本地计算机上。
  3. 启动IDEA或Eclipse。
  4. 配置IDE(例如设置JDK路径、安装插件等)。
JDK安装与配置

JDK(Java Development Kit)是Java开发环境的核心。

安装步骤:

  1. 访问JDK官网下载对应版本的JDK。
  2. 解压下载的JDK安装包。
  3. 设置环境变量:
    • Windows:在系统环境变量中设置JAVA_HOME指向JDK安装目录,Path包含%JAVA_HOME%\bin
    • Linux:编辑~/.bashrc文件,添加JAVA_HOMEPATH环境变量。
Maven的安装与配置

Maven是一个强大的项目管理和构建工具,能够帮助开发者自动管理项目依赖。

安装步骤:

  1. 访问Maven官网下载对应版本的Maven。
  2. 解压下载的Maven安装包。
  3. 设置环境变量:
    • Windows:在系统环境变量中设置MAVEN_HOME指向Maven安装目录,Path包含%MAVEN_HOME%\bin
    • Linux:编辑~/.bashrc文件,添加MAVEN_HOMEPATH环境变量。

配置Maven:

  1. 创建settings.xml文件,配置Maven使用的仓库。
  2. 设置Maven的本地仓库路径。
MySQL数据库的安装与配置

MySQL是一款开源的关系型数据库管理系统。

安装步骤:

  1. 访问MySQL官网下载对应版本的MySQL安装包。
  2. 解压下载的MySQL安装包。
  3. 安装MySQL数据库。
  4. 设置数据库用户名和密码。
  5. 启动MySQL服务。
SSM框架相关依赖的添加

pom.xml文件中添加SSM框架的依赖。以下是一个示例:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>ssm-tutorial</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.10</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
    </dependencies>
</project>
Spring框架基础
Spring的核心概念简介

Spring的核心概念包括:

  • IoC(控制反转):通过容器管理对象的生命周期和依赖关系,而不是由应用程序代码直接创建和管理对象。
  • AOP(面向切面编程):将业务逻辑从横切关注点(如日志、事务管理)中分离出来,提高代码的可维护性和复用性。
  • DI(依赖注入):通过容器注入对象的依赖关系,从而使代码更加解耦和灵活。
简单的Spring配置文件编写

Spring配置文件通常以XML文件的形式存在,用于配置Bean的定义及其依赖关系。以下是一个简单的Spring配置文件示例:

<beans xmlns="http://www.springframework.org/schema/beans"
    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">
    <bean id="exampleBean" class="com.example.ExampleBean">
        <property name="exampleProperty" value="exampleValue"></property>
    </bean>
</beans>

在这个例子中,定义了一个id为exampleBean的Bean,类型为com.example.ExampleBean,并设置了实例属性exampleProperty的值为exampleValue

Spring注解的使用

Spring提供了多种注解,用于简化配置文件的编写。常用的注解包括:

  • @Service:用于标记服务层(业务逻辑层)的组件。
  • @Controller:用于标记控制层(MVC中的控制器)的组件。
  • @Repository:用于标记数据访问层(如DAO层)的组件。
  • @Autowired:用于自动装配依赖的Bean。
  • @Component:通用注解,用于标记任何Spring管理的Bean。
  • @Configuration:用于标记配置类,可包含多个Bean的定义。

以下是一个使用Spring注解的示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.context.annotation.Configuration;

@Service
public class ExampleService {
    private final ExampleRepository exampleRepository;

    @Autowired
    public ExampleService(ExampleRepository exampleRepository) {
        this.exampleRepository = exampleRepository;
    }
}

@Configuration
public class AppConfig {
    @Bean
    public ExampleService exampleService() {
        return new ExampleService(new ExampleRepository());
    }
}
Spring MVC框架基础
Spring MVC的工作原理

Spring MVC遵循MVC设计模式,主要组件包括DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver和Controller。

  1. 请求到达DispatcherServlet:它负责请求的分发。
  2. HandlerMapping解析请求:查找合适的Controller来处理请求。
  3. Controller执行业务逻辑并返回ModelAndView对象:该对象包含视图名称和数据。
  4. ViewResolver解析视图名称:找到具体的视图。
  5. 视图渲染数据:将Model中的数据渲染到视图中。
创建Spring MVC项目
  1. 创建一个新的Maven项目。
  2. 添加Spring MVC相关依赖到pom.xml:
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>5.3.10</version>
    </dependency>
处理请求和响应的基本流程
  1. 配置DispatcherServlet:在web.xml中配置DispatcherServlet。

    <servlet>
       <servlet-name>dispatcher</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/spring-servlet.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>dispatcher</servlet-name>
       <url-pattern>/</url-pattern>
    </servlet-mapping>
  2. 创建Controller类

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.stereotype.Controller;
    
    @Controller
    public class ExampleController {
       @RequestMapping(value = "/example", method = RequestMethod.GET)
       @ResponseBody
       public String exampleMethod() {
           return "Hello, World!";
       }
    }
  3. 配置视图解析器:在spring-servlet.xml中配置视图解析器。
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/views/" />
       <property name="suffix" value=".jsp" />
    </bean>
视图解析器和视图的配置

视图解析器负责将逻辑视图名称解析为实际的视图对象。

  1. 配置InternalResourceViewResolver

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/views/" />
       <property name="suffix" value=".jsp" />
    </bean>
  2. 创建视图文件:在/WEB-INF/views/目录下创建相应的JSP文件。
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <body>
       <h1>Hello, World!</h1>
    </body>
    </html>
MyBatis框架基础
MyBatis的工作原理

MyBatis通过XML配置文件或注解将Java对象映射到数据库表的SQL语句,实现数据库操作。它通过SqlSession来执行SQL语句并获取结果。

  1. 配置文件:通过<mapper>标签定义SQL语句及其对应的Java对象。

    <mapper namespace="com.example.mapper.ExampleMapper">
       <select id="selectExample" resultType="com.example.model.Example">
           SELECT * FROM example WHERE id = #{id}
       </select>
    </mapper>
  2. 映射文件:通过@Mapper注解标记接口。

    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    @Mapper
    public interface ExampleMapper {
       @Select("SELECT * FROM example WHERE id = #{id}")
       Example selectExample(int id);
    }
从数据库创建实体类

实体类对应数据库表的结构,通常包含表中的字段名作为属性,以及相应的getter和setter方法。

  1. 定义实体类

    public class Example {
       private int id;
       private String name;
       private String description;
    
       public int getId() {
           return id;
       }
    
       public void setId(int id) {
           this.id = id;
       }
    
       public String getName() {
           return name;
       }
    
       public void setName(String name) {
           this.name = name;
       }
    
       public String getDescription() {
           return description;
       }
    
       public void setDescription(String description) {
           this.description = description;
       }
    }
映射文件的编写

映射文件描述了SQL语句如何映射到Java对象的方法。

  1. XML配置示例

    <mapper namespace="com.example.mapper.ExampleMapper">
       <select id="selectExample" resultType="com.example.model.Example">
           SELECT * FROM example WHERE id = #{id}
       </select>
       <insert id="insertExample" parameterType="com.example.model.Example">
           INSERT INTO example (id, name, description) VALUES (#{id}, #{name}, #{description})
       </insert>
    </mapper>
  2. 注解配置示例

    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    
    @Mapper
    public interface ExampleMapper {
       @Select("SELECT * FROM example WHERE id = #{id}")
       Example selectExample(int id);
    
       @Insert("INSERT INTO example (id, name, description) VALUES (#{id}, #{name}, #{description})")
       void insertExample(Example example);
    }
配置MyBatis与Spring的整合
  1. 配置MyBatis的SqlSessionFactory

    <bean id="sqlSessionFactory" class="org.apache.ibatis.session.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource" />
       <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>
  2. 配置数据源

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       <property name="url" value="jdbc:mysql://localhost:3306/exampledb" />
       <property name="username" value="root" />
       <property name="password" value="password" />
    </bean>
  3. 配置Mapper扫描
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.example.mapper" />
    </bean>
整合Spring、Spring MVC与MyBatis
整合流程概述
  1. 配置Spring:在Spring配置文件中定义Bean和依赖关系。
  2. 配置Spring MVC:配置DispatcherServlet、HandlerMapping、ViewResolver等组件。
  3. 配置MyBatis:配置SqlSessionFactory、Mapper扫描等。
  4. 编写业务逻辑代码:将Spring、Spring MVC和MyBatis结合起来,实现业务逻辑。
配置Spring与Spring MVC的整合
  1. 配置DispatcherServlet

    <servlet>
       <servlet-name>dispatcher</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/spring-servlet.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>dispatcher</servlet-name>
       <url-pattern>/</url-pattern>
    </servlet-mapping>
  2. Spring配置文件

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/views/" />
       <property name="suffix" value=".jsp" />
    </bean>
    
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
    
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
配置Spring与MyBatis的整合
  1. 配置SqlSessionFactory

    <bean id="sqlSessionFactory" class="org.apache.ibatis.session.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource" />
       <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>
  2. 配置数据源

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       <property name="url" value="jdbc:mysql://localhost:3306/exampledb" />
       <property name="username" value="root" />
       <property name="password" value="password" />
    </bean>
  3. 配置Mapper扫描
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.example.mapper" />
    </bean>
编写简单的增删改查操作
  1. 创建Mapper接口

    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Update;
    import org.apache.ibatis.annotations.Delete;
    
    @Mapper
    public interface ExampleMapper {
       @Select("SELECT * FROM example WHERE id = #{id}")
       Example selectExample(int id);
    
       @Insert("INSERT INTO example (id, name, description) VALUES (#{id}, #{name}, #{description})")
       void insertExample(Example example);
    
       @Update("UPDATE example SET name = #{name}, description = #{description} WHERE id = #{id}")
       void updateExample(Example example);
    
       @Delete("DELETE FROM example WHERE id = #{id}")
       void deleteExample(int id);
    }
  2. 创建Service层

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class ExampleService {
       private final ExampleMapper exampleMapper;
    
       @Autowired
       public ExampleService(ExampleMapper exampleMapper) {
           this.exampleMapper = exampleMapper;
       }
    
       public Example selectExample(int id) {
           return exampleMapper.selectExample(id);
       }
    
       public void insertExample(Example example) {
           exampleMapper.insertExample(example);
       }
    
       public void updateExample(Example example) {
           exampleMapper.updateExample(example);
       }
    
       public void deleteExample(int id) {
           exampleMapper.deleteExample(id);
       }
    }
  3. 创建Controller层

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    @Controller
    public class ExampleController {
       private final ExampleService exampleService;
    
       @Autowired
       public ExampleController(ExampleService exampleService) {
           this.exampleService = exampleService;
       }
    
       @GetMapping("/example/{id}")
       @ResponseBody
       public Example getExample(@PathVariable int id) {
           return exampleService.selectExample(id);
       }
    
       @PostMapping("/example")
       @ResponseBody
       public void insertExample(@RequestBody Example example) {
           exampleService.insertExample(example);
       }
    
       @PutMapping("/example")
       @ResponseBody
       public void updateExample(@RequestBody Example example) {
           exampleService.updateExample(example);
       }
    
       @DeleteMapping("/example/{id}")
       @ResponseBody
       public void deleteExample(@PathVariable int id) {
           exampleService.deleteExample(id);
       }
    }

通过上述步骤,可以完成SSM框架的整合,并实现简单的增删改查操作。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消