Java Spring 框架下利用 MyBatis 实现请求 MySQL 数据库的存储过程

请添加图片描述

Java Spring 框架下利用 MyBatis 实现请求 MySQL 数据库的存储过程

    • 环境准备与前置知识
    • 1. 创建 MySQL 存储过程
    • 2. 配置数据源
    • 3. 创建实体类
    • 4. 创建 Mapper 接口
    • 5. 创建 Mapper XML 文件
    • 6. 创建 Service 接口及Impl实现类
    • 7. 创建 Controller 类
    • 8. 测试与总结

在现代的 Web 应用开发中,我们经常需要与数据库交互。Java Spring 框架搭配 MyBatis 可以方便地实现对 MySQL 数据库的操作,特别是调用存储过程。本文将深入探讨如何在 Spring + MyBatis 的环境中调用 MySQL 存储过程并获取查询结果。


环境准备与前置知识

在开始之前,确保已经安装了 Java、Maven、MySQL,并且有一个基本的 Spring Boot 项目。此外,还需要了解以下知识点:

  • Spring Framework:依赖注入、声明式事务管理等核心概念。
  • MyBatis:一个优秀的持久层框架,它提供了 SQL 映射和事务管理。
  • MySQL:关系型数据库管理系统,存储过程是其高级功能之一。

1. 创建 MySQL 存储过程

首先,我们需要在 MySQL 数据库中创建一个名为 CJWDemoFunction 的存储过程。以下是一个简单的存储过程示例,它接受两个输入参数 param1param2

DELIMITER //
CREATE PROCEDURE CJWDemoFunction(IN param1 INT, IN param2 INT, OUT result INT)
BEGIN-- 在这里执行你的业务逻辑SET result = param1 + param2;
END //
DELIMITER ;

注意:需要根据实际需求修改存储过程的名称和参数


2. 配置数据源

application.properties 文件或yml中,配置数据源和 MyBatis 相关信息:

spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis.type-aliases-package=com.example.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true

3. 创建实体类

创建一个 User 实体类,用于映射数据库中的 users 表:

public class User {private Integer id;private String name;private String email;// getter and setter methods
}

4. 创建 Mapper 接口

创建一个 UserMapper 接口,用于调用存储过程:

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Procedure;
import java.util.List;@Mapper
public interface UserMapper {@Procedure("CJWDemoFunction")int cjwDemoFunction(@Param("param1") int param1, @Param("param2") int param2);
}

5. 创建 Mapper XML 文件

创建一个 UserMapper.xml 文件,用于定义存储过程的输入输出参数:

<?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.demo.mapper.UserMapper"><procedure id="cjwDemoFunction" statementType="CALLABLE">{ call CJWDemoFunction(#{param1, mode=IN}, #{param2, mode=IN, jdbcType=INTEGER}), mode=OUT }</procedure>
</mapper>

6. 创建 Service 接口及Impl实现类

创建一个 UserService 接口及其实现类 UserServiceImpl,用于调用 UserMapper

public interface UserService {int cjwDemoFunction(int param1, int param2);
}@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic int cjwDemoFunction(int param1, int param2) {return userMapper.cjwDemoFunction(param1, param2);}
}

7. 创建 Controller 类

创建一个 UserController 类,用于处理 HTTP 请求:

@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/cjwDemoFunction")public ResponseEntity<Integer> cjwDemoFunction(@RequestParam("param1") int param1, @RequestParam("param2") int param2) {int result = userService.cjwDemoFunction(param1, param2);return new ResponseEntity<>(result, HttpStatus.OK);}
}

8. 测试与总结

现在,我们可以启动 Spring Boot 应用,并通过访问 http://localhost:8080/users/cjwDemoFunction?param1=3&param2=5 来查看查询结果。如果一切正常,我们应该可以看到计算结果。

本文详细介绍了如何在 Java Spring 框架下利用 MyBatis 实现请求 MySQL 数据库的存储过程返回查询结果。通过本文的学习,你应该掌握了 MyBatis 的基本配置、调用存储过程的方法以及 Service 和 Controller 的实现。希望本文对你有所帮助!


开心一下

  1. 为什么程序员喜欢在夜里工作?因为这样可以减少 bug 的数量。😂
  2. 为什么程序员总是混淆圣诞节和万圣节?因为 Oct 31 == Dec 25。😂
  3. 为什么程序员喜欢 Unix?因为它有好的可移植性(portability)。😂

编程就像一场马拉松,不要害怕困难和挑战。只要你坚持不懈,不断学习和进步,最终你会到达成功的终点。加油!


END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625530.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘!网络安全“4法2例”国家安全体系背后基石

今年的四月十五日&#xff0c;承载着特殊的意义&#xff0c;它标志着我国迎来了第九个全民国家安全教育日。今年的主题活动聚焦于“总体国家安全观 创新引领10周年”&#xff0c;唤醒了我们对新时代国家安全多元维度的深刻认知。 网络安全&#xff0c;作为国家总体安全架构中的…

2024五一杯数学建模A题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

攻防世界---misc---hit-the-core

1.下载附件&#xff0c;用记事本打开&#xff0c;在记事本中发现一串可疑的字符串&#xff0c;很像flag 2.注意观察会发现&#xff0c;它的大写字母出现的很有规律&#xff1a;除第一个字母外&#xff0c;其余的都是每隔4个字母出现大写字母 3.接着用C语言写脚本 #include <…

LINUX网卡一般性问题分析

一、网卡相关概念 网卡&#xff1a;网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。 网络模型&#xff1a;OSI网络模型、TCP/IP网络模型 LINUX网络收发流程&#xff1a; 1. 内核分配一个主内存地址段&#xff08;DMA缓冲区)&#xff0c;网卡设备可以在…

Linux中进程和计划任务

一.程序 1.什么是程序 &#xff08;1&#xff09;是一组计算机能识别和执行的指令&#xff0c;运行于电子计算机上&#xff0c;满足人们某种需求的信息化工具 &#xff08;2&#xff09;用于描述进程要完成的功能&#xff0c;是控制进程执行的指令集 二.进程 1.什么是进程…

docker网路和主机通讯问题

#注 1&#xff0c;安装docker和启动容器服务的时候如果防火墙处于开启状态&#xff0c;那么重启docker里面的容器的时候必须开启防火墙&#xff0c;否则会出现iptable错误&#xff1b; 2&#xff0c;linux开启防火墙会导致主机和docker网络之间单向通讯&#xff0c;主机可以访…

2024蓝桥杯每日一题(最大公约数)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;公约数 试题二&#xff1a;最大公约数 试题三&#xff1a;等差数列 试题四&#xff1a;最大比例 试题五&#xff1a;Hankson的趣味题 试题一&#xff1a;公约数 【题目描述】 …

呵护童心:儿童情感测试的关怀指南

引言&#xff1a; 儿童的情感健康对于其成长和发展至关重要。情感测试作为了解和评估儿童情感状态的重要工具&#xff0c;需要在专业人士的指导下进行&#xff0c;并且需要家长的配合和关注。本文将探讨儿童情感测试的注意事项&#xff0c;以期为儿童的情感健康提供更全面的保障…

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds

记【k8s】&#xff1a;访问 Prometheus UI界面&#xff1a;kubernetes-etcd &#xff08;0/1 up&#xff09; Error &#xff1a; out of bounds 1、报错详情2、解决方法 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 出现 “out of bound…

街景图片语义分割后像素类别提取,用于计算各种指标。

语义分割代码见之前博文&#xff08;免费&#xff09;&#xff1a;deeplabv3街景图片语义分割&#xff0c;无需训练模型&#xff0c;看不懂也没有影响&#xff0c;直接使用。cityscapes 语义分割之后&#xff0c;如下图&#xff0c;想要统计各类像素所占的比例&#xff0c;用于…

用于密集视觉冲击的紧凑三维高斯散射Compact 3D Gaussian Splatting For Dense Visual SLAM

Compact 3D Gaussian Splatting For Dense Visual SLAM 用于密集视觉冲击的紧凑三维高斯散射 Tianchen Deng 邓天辰11Yaohui Chen 陈耀辉11Leyan Zhang 张乐妍11Jianfei Yang 杨健飞22Shenghai Yuan 圣海元22Danwei Wang 王丹伟22Weidong Chen 陈卫东11 Abstract 摘要 …

模仿银行系统的极简Java三层结构应用——存钱功能的实现

一&#xff0c;前提&#xff1a; 我们上次做了一个简易的银行系统&#xff0c;初步认识了java结构&#xff0c;目前该系统可以输入要用的数据并且输出。 二&#xff0c;目标&#xff1a; 我们这次的目标是实现一个简易的存钱功能&#xff0c;并输出存钱后的余额&#xff0c;…