Spring整合mybatis、springMVC总结

这篇攻略主要介绍如何整合Spring、Mybatis和Spring MVC三个开源框架,让我们能够更轻松、更高效的构建Web应用程序。

简介

Spring是一个开源的JavaEE框架,用于开发企业级Web应用程序。Mybatis是一款轻量级的Java ORM框架,很适合与Spring集成。Spring MVC是Spring框架的一部分,用于构建Web应用程序。

步骤

Step 1. 创建一个Maven项目

首先,我们创建一个Maven项目,命名为spring-mybatis-demo,使用Java 8或更高版本。在pom.xml文件中加入以下依赖:

<dependencies>
    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>

    <!-- Spring Context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>

    <!-- Spring MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>

    <!-- Mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.3</version>
    </dependency>

    <!-- Mybatis-Spring -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.4</version>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.20</version>
    </dependency>
</dependencies>

Step 2. 添加数据库连接

创建一个名为config.properties的文件,在其中加入以下属性:

jdbc.url=jdbc:mysql://localhost:3306/spring-demo?useSSL=false
jdbc.username=root
jdbc.password=root

其中,jdbc.url是数据库的连接URL,jdbc.usernamejdbc.password是数据库的用户名和密码。

Step 3. 创建数据库和数据表

我们创建一个名为spring-demo的数据库,并在其中创建一个user表,表结构如下:

CREATE TABLE `user` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `email` VARCHAR(255) NOT NULL,
    `password` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Step 4. 创建数据访问层接口和实现类

创建一个名为UserMapper的Java接口,包含以下方法:

public interface UserMapper {
    List<User> findAll();
}

创建一个名为UserMapperImpl的Java类,实现UserMapper接口:

@Repository
public class UserMapperImpl implements UserMapper {

    private SqlSessionFactory sessionFactory;

    @Autowired
    public UserMapperImpl(SqlSessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public List<User> findAll() {
        try (SqlSession session = sessionFactory.openSession()) {
            return session.selectList("user.findAll");
        }
    }
}

src/main/resources目录下创建一个名为UserMapper.xml的Mybatis映射文件:

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">
    <select id="findAll" resultType="User">
        SELECT * FROM user
    </select>
</mapper>

Step 5. 创建控制器

创建一个名为UserController的Java类,包含以下方法:

@Controller
public class UserController {

    private UserMapper userMapper;

    @Autowired
    public UserController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @RequestMapping("/")
    public String home(Model model) {
        List<User> users = userMapper.findAll();
        model.addAttribute("users", users);
        return "home";
    }
}

Step 6. 创建视图

src/main/webapp/WEB-INF/views目录下创建一个名为home.jsp的JSP文件,包含以下内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Spring-Mybatis Demo</title>
</head>
<body>
    <h1>Users</h1>
    <table>
        <thead>
            <tr>
                <th>Id</th>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach var="user" items="${users}">
                <tr>
                    <td>${user.id}</td>
                    <td>${user.name}</td>
                    <td>${user.email}</td>
                </tr>
            </c:forEach>
        </tbody>
    </table>
</body>
</html>

Step 7. 配置Spring

src/main/resources目录下创建一个名为applicationContext.xml的Spring配置文件,配置以下内容:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
</bean>

<bean id="userMapper" class="com.example.mapper.UserMapperImpl">
    <constructor-arg ref="sqlSessionFactory"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

Step 8. 配置Spring MVC

src/main/webapp/WEB-INF目录下创建一个名为spring-servlet.xml的Spring MVC配置文件,配置以下内容:

<context:component-scan base-package="com.example.controller"/>
<mvc:annotation-driven/>

Step 9. 部署应用程序

最后,我们使用Maven将项目打包成WAR文件,并部署到Tomcat中。我们可以通过访问http://localhost:8080/spring-mybatis-demo/来查看我们的Web应用程序。

示例

示例1: 添加用户

我们修改UserController类,添加一个添加用户的方法:

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@ModelAttribute User user, Model model) {
    userMapper.addUser(user);
    List<User> users = userMapper.findAll();
    model.addAttribute("users", users);
    return "home";
}

修改home.jsp,增加一个表单来添加用户:

<form action="addUser" method="post">
    <p>
        <label>姓名:</label>
        <input type="text" name="name"/>
    </p>
    <p>
        <label>邮箱:</label>
        <input type="text" name="email"/>
    </p>
    <p>
        <label>密码:</label>
        <input type="password" name="password"/>
    </p>
    <p>
        <input type="submit" value="提交"/>
    </p>
</form>

UserMapper中新增加一个添加用户的方法:

public interface UserMapper {
    List<User> findAll();
    void addUser(User user);
}

UserMapper.xml中新增加一条INSERT语句:

<insert id="addUser" parameterType="User">
    INSERT INTO user (name, email, password) VALUES
    (#{name}, #{email}, #{password})
</insert>

示例2: 删除用户

我们修改UserController类,添加一个删除用户的方法:

@RequestMapping("/deleteUser")
public String deleteUser(@RequestParam int id, Model model) {
    userMapper.deleteUser(id);
    List<User> users = userMapper.findAll();
    model.addAttribute("users", users);
    return "home";
}

修改home.jsp,在表格中增加一个删除按钮:

<c:forEach var="user" items="${users}">
    <tr>
        <td>${user.id}</td>
        <td>${user.name}</td>
        <td>${user.email}</td>
        <td><a href="deleteUser?id=${user.id}">删除</a></td>
    </tr>
</c:forEach>

UserMapper中新增加一个删除用户的方法:

public interface UserMapper {
    List<User> findAll();
    void addUser(User user);
    void deleteUser(int id);
}

UserMapper.xml中新增加一条DELETE语句:

<delete id="deleteUser" parameterType="int">
    DELETE FROM user WHERE id = #{id}
</delete>

结论

我们完成了Spring、Mybatis和Spring MVC三个框架的整合。该框架结构能够让我们更快、更高效的构建Web应用程序。

阅读剩余 84%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring整合mybatis、springMVC总结 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Idea启动多个SpringBoot项目的3种最新方案

    在Idea中启动多个SpringBoot项目是一个常见的需求,本文将详细讲解三种最新方案,以及两个示例。 方案一:使用Idea的多模块项目 在Idea中,我们可以使用多模块项目来启动多个SpringBoot项目。以下是一个简单的示例: 创建一个多模块项目,包含多个SpringBoot模块。 在每个模块中,创建一个SpringBoot启动类,并使用@Sprin…

    Java 2023年5月15日
    00
  • SpringBoot集成QQ第三方登陆的实现

    下面是关于“SpringBoot集成QQ第三方登陆的实现”的完整攻略: 准备工作 获取QQ开放平台的App ID和App Secret 在访问QQ开放平台前,需要提前获取申请QQ第三方登陆的AppID和AppSecret,具体申请过程可以参考QQ互联官方文档。 导入依赖 在SpringBoot应用的pom.xml文件中添加QQ互联API的依赖,同时可以添加日…

    Java 2023年5月20日
    00
  • 详解SpringBoot通过restTemplate实现消费服务

    在Spring Boot中,我们可以使用RestTemplate来消费RESTful服务。RestTemplate是Spring框架提供的一个HTTP客户端,它可以发送HTTP请求并接收HTTP响应。在本攻略中,我们将详细介绍如何使用RestTemplate来消费服务,并提供两个示例来说明其用法。 以下是两个示例,介绍如何使用RestTemplate来消费服…

    Java 2023年5月15日
    00
  • Spring Boot启动及退出加载项的方法

    一、SpringBoot启动及退出加载项的方法 SpringBoot是Spring开发的一款快速应用开发框架,其内置了很多工具和插件,可以让我们非常方便地进行开发。当我们启动SpringBoot应用时,会默认加载一些列的启动项,而这些启动项实际上也是可以自定义的。同样地,当我们停止SpringBoot应用时,也会默认执行一些列的退出项,这些退出项也同样是可以…

    Java 2023年5月15日
    00
  • Spring Boot 底层原理基础深度解析

    下面我将详细讲解“Spring Boot 底层原理基础深度解析”的完整攻略。本攻略将分为以下几个部分: 什么是Spring Boot Spring Boot的核心概念及技术栈 Spring Boot的启动流程详解 Spring Boot的自动化配置原理 示例一:使用Spring Boot构建一个简单的Web应用 示例二:使用Spring Boot集成MyBa…

    Java 2023年5月19日
    00
  • SpringSceurity实现短信验证码功能的示例代码

    下面我将详细讲解如何使用Spring Security实现短信验证码功能。这里假设你已经有了一个基于Spring Security的Web应用程序,现在要添加短信验证码功能。 准备工作 在开始实现之前需要进行一些准备工作: 1.添加Spring Security支持短信验证码功能的依赖; 在pom.xml中添加以下依赖: <dependency>…

    Java 2023年5月20日
    00
  • JDK、J2EE、J2SE、J2ME四个易混淆概念区分

    JDK、J2EE、J2SE、J2ME 四个概念都指代着Java平台,并且在实际开发中经常被提到,但是这四个概念都涉及到的范围不同。在使用Java进行开发时,理解四者的差异和联系非常重要。下面是对这四个概念的详细讲解: JDK JDK(Java Development Kit)是Java平台的标准开发工具包,包含了Java编程所需的完整的开发环境(JRE、Ja…

    Java 2023年5月24日
    00
  • java 单元测试 对h2数据库数据清理方式

    Java单元测试是一种自动化测试,旨在保证代码质量和正确性。在单元测试中,我们通常需要使用模拟对象、桩件和测试用例去测试单元代码,其中往往也需要使用数据库。但是,测试过程中肯定会产生一些垃圾数据,如果不及时清理便会影响后续的测试。因此,在使用H2数据库进行单元测试时,我们需要设置数据清理方式。 以下是Java单元测试对H2数据库数据清理的完整攻略。 1. H…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部