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应用程序。

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

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

相关文章

  • SpringBoot基于HttpMessageConverter实现全局日期格式化

    下面是详细讲解“SpringBoot基于HttpMessageConverter实现全局日期格式化”的完整攻略。 1. 什么是HttpMessageConverter HttpMessageConverter 是 Spring 框架中的一个接口,用于将请求和响应的数据转换为特定的格式。它可以将浏览器提交的数据(如:application/json 、 app…

    Java 2023年5月20日
    00
  • Java编程生产者消费者实现的四种方法

    Java编程生产者消费者实现的四种方法 生产者消费者问题是指在生产者和消费者之间同步的问题。生产者一直在生产消息,消费者一直在从队列中取走消息,并且队列中只能存储有限的消息。Java中提供了多种实现生产者消费者问题的方法,具体如下: 方法一:使用wait()和notify()方法 这是最基本的一种实现方式。使用wait()方法让生产者线程等待,当消息队列满时…

    Java 2023年5月18日
    00
  • 微信小程序实现电子签名并导出图片

    下面我将详细讲解如何实现微信小程序实现电子签名并导出图片的完整攻略。 前置知识 在开始之前,需要了解一些前置知识: HTML5 canvas CanvasRenderingContext2D 微信小程序 file API 实现步骤 步骤一:创建 canvas 元素 在小程序的 WXML 文件中,创建一个 canvas 元素: <canvas id=&q…

    Java 2023年5月23日
    00
  • JS实现上传文件显示进度条

    JS实现上传文件显示进度条的完整攻略: HTML部分 首先要有一个文件上传表单,可通过以下代码添加: <form name="form1" method="post" enctype="multipart/form-data" action="upload.php">…

    Java 2023年6月16日
    00
  • MyBatis实现插入大量数据方法详解

    MyBatis实现插入大量数据方法详解 介绍 在实际开发中,可能会遇到需要插入大量数据的情况。如果使用MyBatis默认的SQL语句,会导致多次数据库交互,效率低下。因此,本篇文章将介绍MyBatis如何实现插入大量数据的方法。 使用batch插入 MyBatis提供了批量插入数据的功能,即batch插入。下面是示例代码: <insert id=&qu…

    Java 2023年5月20日
    00
  • Spark Streaming算子开发实例

    下面我将详细讲解“Spark Streaming算子开发实例”的完整攻略。 算子开发实例 1. 算子函数定义 首先,我们需要定义一个算子函数,其输入参数为RDD类型,输出参数为RDD类型。 def applyFunction(rdd: RDD[String]): RDD[String] = { rdd.flatMap(line => line.spli…

    Java 2023年5月20日
    00
  • 浅谈springMVC接收前端json数据的总结

    Spring MVC接收前端JSON数据的总结 Spring MVC是一个非常流行的Web框架,支持接收前端发送的JSON数据。在使用SpringMVC开发Web应用时,接收前端JSON数据是必须掌握的技能。 本篇文章将会介绍在SpringMVC中接收前端JSON数据的方法和技巧,通过本文的学习,你将能掌握接收JSON数据的基本方法和典型应用场景。 接收前端…

    Java 2023年5月16日
    00
  • Java多线程之Callable接口的实现

    标题:Java多线程之Callable接口的实现 正文: Callable接口的概述 在Java中,实现多线程有两种方式:继承Thread类和实现Runnable接口,但这两种方式都有一个缺点,就是无法返回结果。而Callable接口则可以解决这个问题,它可以在任务执行完成后返回一个结果。 Callable接口是一个带泛型参数的接口,它只有一个方法call(…

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