spring mvc 组合mybatis框架实例详解

Spring MVC 搭配 MyBatis 框架实例详解

本文将针对如何使用 Spring MVC 框架搭配 MyBatis 框架展开讲解,包括环境搭建、配置,以及搭建一个简单的增删改查示例。

环境搭建

为了使用 Spring MVC 搭配 MyBatis 框架,我们需要先完成以下环境的搭建:

  • JDK:需要 JDK 版本为 1.8 或以上;
  • Maven:使用 Maven 进行项目依赖和管理;
  • Spring MVC:使用 Spring MVC 作为 Web 框架,版本为 5.3.5;
  • MyBatis:使用 MyBatis 作为 ORM 框架,版本为 3.5.6;
  • MySQL:使用 MySQL 作为数据库,版本为 8.0.23。

配置文件

pom.xml

在 Maven 的 pom.xml 文件中加入以下依赖:

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

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

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

applicationContext.xml

在 Spring MVC 的 applicationContext.xml 文件中加入以下配置:

<!-- 数据库连接配置 -->
<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC" />
    <property name="username" value="root" />
    <property name="password" value="123456" />
</bean>

<!-- MyBatis 配置,包括数据库连接和 mapper 配置 -->
<bean id="sqlSessionFactory" 
    class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis-config.xml" />
    <property name="mapperLocations" value="classpath*:com/example/mapper/*.xml" />
</bean>

<!-- MyBatis Mapper 自动扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mapper" />
</bean>

<!-- 注册 Controller 类 -->
<context:component-scan base-package="com.example.controller" />

mybatis-config.xml

在 MyBatis 的 mybatis-config.xml 文件中加入以下配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
    <!-- 使用注解方式进行 Mapper 映射 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
        <setting name="logImpl" value="LOG4J2"/>
    </settings>

    <!-- Mapper 文件自动扫描 -->
    <mappers>
        <mapper class="com.example.mapper.UserMapper" />
    </mappers>
</configuration>

示例说明

以下是一个简单的示例,实现增删改查功能:

UserMapper.java

package com.example.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.example.dto.User;

public interface UserMapper {
    @Select("SELECT * FROM user")
    List<User> getUsers();

    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(int id);

    @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")
    void addUser(User user);

    @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
    void updateUser(User user);

    @Delete("DELETE FROM user WHERE id = #{id}")
    void deleteUser(int id);
}

UserController.java

package com.example.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import com.example.dto.User;
import com.example.mapper.UserMapper;

@Controller
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user/all")
    public String getUsers(ModelMap modelMap) {
        List<User> users = userMapper.getUsers();
        modelMap.addAttribute("users", users);
        return "user_list";
    }

    @GetMapping("/user/add")
    public String addUserView() {
        return "user_add";
    }

    @PostMapping("/user/add")
    public String addUser(User user) {
        userMapper.addUser(user);
        return "redirect:/user/all";
    }

    @GetMapping("/user/edit/{id}")
    public String editUserView(@PathVariable("id") int id, ModelMap modelMap) {
        User user = userMapper.getUserById(id);
        modelMap.addAttribute("user", user);
        return "user_edit";
    }

    @PostMapping("/user/edit")
    public String editUser(User user) {
        userMapper.updateUser(user);
        return "redirect:/user/all";
    }

    @GetMapping("/user/delete/{id}")
    public String deleteUser(@PathVariable("id") int id) {
        userMapper.deleteUser(id);
        return "redirect:/user/all";
    }
}

user_list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <a href="${pageContext.request.contextPath}/user/add">Add User</a>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Operation</th>  
        </tr>
        <c:forEach var="user" items="${users}">
            <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>
                    <a href="${pageContext.request.contextPath}/user/edit/${user.id}">Edit</a>
                    <a href="${pageContext.request.contextPath}/user/delete/${user.id}">Delete</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

user_add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Add User</title>
</head>
<body>
    <h1>Add User</h1>
    <form action="${pageContext.request.contextPath}/user/add" method="post">
        <table>
            <tr>
                <td>Name:</td>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>Age:</td>
                <td><input type="text" name="age" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="Add" /></td>
            </tr>
        </table>
    </form>
</body>
</html>

user_edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Edit User</title>
</head>
<body>
    <h1>Edit User</h1>
    <form action="${pageContext.request.contextPath}/user/edit" method="post">
        <table>
            <input type="hidden" name="id" value="${user.id}" />
            <tr>
                <td>Name:</td>
                <td><input type="text" name="name" value="${user.name}" /></td>
            </tr>
            <tr>
                <td>Age:</td>
                <td><input type="text" name="age" value="${user.age}" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="Save" /></td>
            </tr>
        </table>
    </form>
</body>
</html>

结束语

通过上述的配置和示例,你已经了解了如何使用 Spring MVC 搭配 MyBatis 框架。当然,这里只是简单的示例,实际生产环境中可能会更加复杂。但通过这个例子的理解,你应该理解了整个框架的基本原理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring mvc 组合mybatis框架实例详解 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • JAVA API 实用类 String详解

    JAVA API 实用类 String详解 String类概述 在Java中,String类是一个非常重要的类,被广泛应用于很多领域。String类是Java API(应用程序接口)中提供的常用的实用类。String类没有公共构造方法,因此在创建String对象时,可以直接使用字面值创建对象。 String类的常用方法: length():获取字符串长度 c…

    Java 2023年5月26日
    00
  • Spring MVC注解式开发示例完整过程

    Spring MVC注解式开发示例完整过程 Spring MVC是一种基于Java的Web框架,它可以帮助我们快速开发Web应用程序。在Spring MVC中,我们可以使用注解来简化开发过程。本文将详细讲解Spring MVC注解式开发的示例过程,并提供两个示例说明。 Spring MVC注解式开发的示例过程 下面是一个Spring MVC注解式开发的示例过…

    Java 2023年5月17日
    00
  • Java多线程案例之定时器详解

    Java多线程案例之定时器详解 简介 定时器(Timer)是 Java 多线程编程中的常用工具,它可以让我们方便地实现定时任务。如果想要在 Java 中实现定时器,可以使用 JavaSE 中提供的 Timer 类或者 ScheduledExecutorService 接口。 在这篇文章中,我们将深入探讨 Java 多线程编程中的定时器,并通过多个示例说明如何…

    Java 2023年5月18日
    00
  • 详解查看JAVA API及JAVA源码的方法

    查看JAVA API及JAVA源码是Java程序员开发工作必不可少的技能。下面是详解查看JAVA API及JAVA源码的方法的攻略: 1. 查看JAVA API JAVA API 是 Java 开发人员使用 Java 标准类库和相关的第三方库的文档,它记录了标准库中各个类和方法的相关说明和具体用法,可以通过查阅来了解 API 中所提供的所有工具。 1.1 查…

    Java 2023年5月23日
    00
  • SpringBoot搭建全局异常拦截

    一、概述 在使用Spring Boot开发Web应用的过程中,我们经常会遇到程序抛出异常的情况。如何优雅地处理这些异常,返回友好的错误信息给客户端,是很重要的一件事情。Spring Boot提供了全局异常处理机制,可以方便地实现统一的异常处理逻辑,减少代码重复,提高开发效率。 本文将介绍如何使用Spring Boot自带的全局异常处理机制,搭建一个通用的全局…

    Java 2023年5月27日
    00
  • 使用IDEA配置Maven搭建开发框架ssm教程

    Sure, 我会提供一份详细的使用IDEA配置Maven搭建开发框架SSM的教程攻略。这个过程分为以下几个步骤: 1. 安装并配置Maven和MySql 首先,你需要在你的计算机上安装和配置Maven和MySql,可以参考官方文档或者在线教程。 2. 使用IDEA创建一个Maven项目 打开IDEA,点击“File” -> “New” -> “P…

    Java 2023年5月20日
    00
  • Spring Security权限管理小结

    关于“Spring Security权限管理小结”的完整攻略,我们可以从以下几个方面来介绍。 1. Spring Security简介 Spring Security是一款基于Spring框架的安全框架,提供了丰富的安全特性和机制,支持登录认证、授权访问、安全协议、攻击防护等功能。在Spring应用中,使用Spring Security可以非常方便地实现系统…

    Java 2023年5月19日
    00
  • Spring Boot使用yml格式进行配置的方法

    SpringBoot使用yml格式进行配置的方法 在SpringBoot中,我们可以使用yml格式来进行配置。yml格式相比于properties格式更加简洁易读,可以提高配置文件的可维护性。本文将详细讲解SpringBoot使用yml格式进行配置的方法,并提供两个示例。 1. yml格式基本语法 yml格式使用缩进来表示层级关系,使用冒号来表示键值对。以下…

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