iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mybatis调用mysql存储过程并获取返回值方式
  • 157
分享到

mybatis调用mysql存储过程并获取返回值方式

2024-04-02 19:04:59 157人浏览 薄情痞子
摘要

目录mybatis调用Mysql存储过程并获取返回值1、mysql创建存储过程2、mybatis调用mybatis调存储过程遇到返回值null的坑mybatis调存储过程时返回值nu

mybatis调用mysql存储过程并获取返回值

1、mysql创建存储过程

#结束符号默认;, delimiter $$语句表示结束符号变更为$$
delimiter $$
CREATE PROCEDURE `demo`(IN inStr VARCHAR(100), out ourStr VARCHAR(4000))
BEGIN

SET ourStr = '01';
if (inStr == '02') then
    set ourStr = '02';
end if;

END$$
#结束符号修改
delimiter ;

2、mybatis调用

(1)注解方式

// key1和key2都是参数map中的key
// key1是需要传入存储过程的值
// key2是用于接收存储过程返回的值,跟获取自增主键类似
@Select("call demo('${key1}', #{key2, mode=OUT, jdbcType=VARCHAR})")
@Options(statementType = StatementType.CALLABLE)
String getDemoValue(Map<String, Object> map);

(2)xml方式

 <select id="getDemoValue" resultType="java.lang.String" parameterType="java.util.Map" statementType="CALLABLE">
     call demo('${key1}', #{key2, mode=OUT, jdbcType=VARCHAR})
 </select>

mybatis调存储过程遇到返回值null的坑

mybatis调存储过程时返回值null

就简单的一个存储过程

BEGIN
   #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex;
   SELECT user_name userName FROM test_user t WHERE t.user_sex=sex;
END

然后在Mybatis Mapper配置文件中

 <!--存储过程  输入参数用Map -->
  <select id="queryCountBySexWithProcedure" statementType="CALLABLE" parameterType="java.util.Map" resultType="java.util.HashMap">
      {
           CALL queryCountBySexWithProcedure(
              #{sex,jdbcType=VARCHAR,mode=IN},
              #{userName,jdbcType=VARCHAR,mode=OUT}
           )
    }
  </select>

然后userName值null,这是为什么呢?在mapper.xml文件会做映射处理,而在存储过程中下方标红的属性 user_name并不会自动映射到userName 值中,所以调用userName值一定返回null。

BEGIN
   #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex;
   SELECT user_name userName FROM test_user t WHERE t.user_sex=sex;
END

那怎么处理这样问题呢?那就是加上INTO 关键字

BEGIN
    #SELECT COUNT(*) scount FROM test_user t WHERE t.user_sex=sex;
         SELECT user_name INTO userName FROM test_user t WHERE t.user_sex=sex;
END

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: mybatis调用mysql存储过程并获取返回值方式

本文链接: https://www.lsjlt.com/news/165907.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis调用mysql存储过程并获取返回值方式
    目录mybatis调用mysql存储过程并获取返回值1、mysql创建存储过程2、mybatis调用mybatis调存储过程遇到返回值null的坑mybatis调存储过程时返回值nu...
    99+
    2024-04-02
  • 关于mybatis调用存储过程获取返回值问题
    总体思路:map传值 controller: Map<String,Object> m=new HashMap<String,Object>(); ...
    99+
    2024-04-02
  • Springmvc调用存储过程,并返回存储过程返还的数据方式
    目录Springmvc调用存储过程,并返回存储过程返还的数据实现如下这里要重点说明一下Springmvc调用存储过程,entity文件写法Springmvc调用存储过程,并返回存储过...
    99+
    2024-04-02
  • mybatis调用sqlserver存储过程返回结果集的方法
    第一种:返回值通过out输出 sqlserver存储 testMapper.xml 两种都能接收到数据的, 因为我的实体类字段与数据库的不一致,上面图片是按照数据库字段定义的,下...
    99+
    2024-04-02
  • mysql存储过程 返回 list结果集方式
    目录mysql存储过程 返回 list结果集思路mysql存储过程和存储函数练习存储过程和存储函数语法存储函数案例演示mysql存储过程 返回 list结果集 思路 直接链接多个表返...
    99+
    2024-04-02
  • sql如何获取存储过程返回数据
    这篇文章给大家分享的是有关sql如何获取存储过程返回数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。就是在执行存储后,获取存储过程执行的数据并作为其他应的二次使用,其实在代码中...
    99+
    2024-04-02
  • mybatis调用mysql存储过程(返回参数,单结果集,多结果集)
    目录一、接收一个返回值注意事项:存储过程主要分成三类:二、接收list结果集三、返回多个结果集四、第二种配置也可以一、接收一个返回值 使用Map接收返回参数,output参数放在传入...
    99+
    2024-04-02
  • mybatis如何调用mysql存储过程
    这篇“mybatis如何调用mysql存储过程”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“mybatis如何调用mysql存储过程”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇...
    99+
    2023-06-26
  • Sql Server存储过程中如何调用存储过程接收输出参数返回值
    这篇文章将为大家详细讲解有关Sql Server存储过程中如何调用存储过程接收输出参数返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建存储过程:AL...
    99+
    2024-04-02
  • 怎么在mysql存储过程中返回多个值
    本篇文章为大家展示了怎么在mysql存储过程中返回多个值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mysql存储函数只返回一个值。要开发返回多个值的存储过程,需...
    99+
    2024-04-02
  • Python 获取线程返回值的三种方式
    提到线程,你的大脑应该有这样的印象:我们可以控制它何时开始,却无法控制它何时结束,那么如何获取线程的返回值呢?今天就分享一下自己的一些做法。方法一:使用全局变量的列表,来保存返回值ret_values = [] def thread_fu...
    99+
    2023-05-14
    Python CPython 返回值
  • mysql+mybatis实现存储过程+事务 + 多并发流水号获取
    数据库存储过程 DROP PROCEDURE IF EXISTS `generate_serial_number_by_date`; CREATE PROCEDURE `ge...
    99+
    2024-04-02
  • 怎么使用Node.js调用SQL存储过程并获取结果
    本篇内容介绍了“怎么使用Node.js调用SQL存储过程并获取结果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!连接数据库在使用Node.j...
    99+
    2023-07-05
  • 如何使用Node.js调用SQL存储过程并获取结果
    Node.js作为一种服务器端JavaScript运行环境,已经成为了一种非常受欢迎的技术。对于Node.js的开发者来说,调用数据库存储过程是进行复杂数据库查询的一种有效方法。然而,与其他编程语言相比,Node.js如何正确地调用SQL存...
    99+
    2023-05-14
  • Python获取协程返回值的方式有哪些
    这篇文章主要介绍“Python获取协程返回值的方式有哪些”,在日常操作中,相信很多人在Python获取协程返回值的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python获取协程返回值的方式有哪些...
    99+
    2023-06-22
  • Python获取线程返回值的方式有哪些
    这篇文章主要讲解了“Python获取线程返回值的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python获取线程返回值的方式有哪些”吧!方法一:使用全局变量的列表,来保存返回值r...
    99+
    2023-07-06
  • mysql调用存储过程的方式有哪些
    在MySQL中调用存储过程有以下几种方式: 使用CALL语句调用存储过程:可以使用CALL语句来直接调用存储过程,例如:CALL ...
    99+
    2024-04-09
    mysql
  • 详解Python获取线程返回值的三种方式
    目录方法一方法二方法三最后的话提到线程,你的大脑应该有这样的印象:我们可以控制它何时开始,却无法控制它何时结束,那么如何获取线程的返回值呢?今天就分享一下自己的一些做法。 方法一 使...
    99+
    2024-04-02
  • Python获取协程返回值的四种方式详解
    目录介绍源码依次执行结果介绍 获取协程返回值的四种方式: 1、通过ensure_future获取,本质是future对象中的result方 2、使用loop自带的create_tas...
    99+
    2024-04-02
  • Mybatis调用MySQL存储过程的简单实现
    1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该...
    99+
    2023-05-31
    mybatis 调用 存储过程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作