我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mybatis如何调用mysql存储过程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mybatis如何调用mysql存储过程

这篇“mybatis如何调用mysql存储过程”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“mybatis如何调用mysql存储过程”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具体内容吧。

一、接收一个返回值

使用Map接收返回参数,output参数放在传入的param中

创建表

DROP TABLE IF EXISTS `demo`;CREATE TABLE `demo` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8; -- ------------------------------ Records of demo-- ----------------------------INSERT INTO `demo` VALUES ('1', '测试');

创建存储过程

DROP PROCEDURE IF EXISTS pro;CREATE PROCEDURE pro (IN userId INT,OUT userCount INT)BEGIN DECLARE user_name VARCHAR (64);SELECT NAME FROM demo WHERE id = userId INTO user_name;INSERT INTO demo (NAME) VALUES (user_name);SELECT COUNT(*) FROM demo INTO userCount; END;

mapper.xml

<select id="procedureTest" parameterMap="pm" statementType="CALLABLE">        CALL pro(#{userId,mode=IN},#{userCount,mode=OUT,jdbcType=INTEGER});    </select>     <parameterMap id="pm" type="java.util.Map">        <parameter property="userId" jdbcType="INTEGER" mode="IN"></parameter>        <parameter property="userCount" jdbcType="INTEGER" mode="OUT"></parameter>    </parameterMap>

service

@Override    public void procedureTest() {        Map<String, Object> param = new HashMap<>();        param.put("userId", "1");        demoMapper.procedureTest(param);        System.out.println("输出结果是:"+param.get("userCount"));    }

输出结果

mybatis如何调用mysql存储过程

mybatis如何调用mysql存储过程

参数名不一定和存储过程一样,只和传参顺有关,使用下图配置同样可以获取结果

System.out.println("输出结果是:"+param.get("userCount_2"));

mybatis如何调用mysql存储过程

注意事项:

  存储过程的参数和名称无关,只和顺序有关系

  存储过程的output参数,只能通过传入的map获取

  存储过程返回的结果集可直接用返回的map接收

  存储过程的return结果需要使用?=call procName(?,?)的第一个参数接收,需要指定对应的mode为OUT类型

  存储过程对应的数据类型为枚举类型,需要使用大写,如VARCHAR

output是在存储过程中的参数的返回值(输出参数),而ReturnValue是存储过程返回的值(使用return关键字),一个存储过程可以有任意多个依靠参数返回的值,但只有一个ReturnValue。

存储过程主要分成三类:

返回记录集的存储过程:执行结果是一个记录集,例如,从数据库中检索出符合某一个或几个条件的记录。

返回数值得的存储过程(也可称为标量存储过程),其执行完后返回一个值,例如数据库中执行一个有返回值的函数或命令。

行为存储过程,用来实现数据库的某个功能,而没有返回值,例如在数据库中的更新和删除操作。

二、接收list结果集

使用list接收

mybatis如何调用mysql存储过程

@Override    public void procedureTest() {        Map<String, Object> param = new HashMap<>();        param.put("userId", "1");        List<?> list = demoMapper.procedureTest(param);        System.out.println("输出结果是:" + param.get("userCount_2"));        System.out.println("输出集合:" + list.size());    }
 <select id="procedureTest" parameterMap="pm" statementType="CALLABLE" resultMap="rm">        CALL pro(#{userId,mode=IN},#{userCount_2,mode=OUT,jdbcType=INTEGER});    </select>     <parameterMap id="pm" type="java.util.Map">        <parameter property="userId" jdbcType="INTEGER" mode="IN"></parameter>        <parameter property="userCount_2" jdbcType="INTEGER" mode="OUT"></parameter>    </parameterMap>     <resultMap id="rm" type="com.csstj.srm.entity.procedureTestEntity">        <result column="id" property="id"></result>        <result column="name" property="userName"></result>    </resultMap>

三、返回多个结果集

mybatis如何调用mysql存储过程

mybatis如何调用mysql存储过程

mybatis如何调用mysql存储过程

mybatis如何调用mysql存储过程

四、第二种配置也可以

CALL s_generatePlan_new (#{organizationId, mode=IN,jdbcType=VARCHAR},#{gradeId, mode=IN,jdbcType=VARCHAR},#{semesterId, mode=IN,jdbcType=VARCHAR},#{className, mode=IN,jdbcType=VARCHAR},#{employeeCode, mode=IN,jdbcType=VARCHAR},#{courseName, mode=IN,jdbcType=VARCHAR},#{classroomName, mode=IN,jdbcType=VARCHAR},#{approverId, mode=IN,jdbcType=VARCHAR},#{createBy, mode=IN,jdbcType=VARCHAR},#{total,mode=OUT ,jdbcType=VARCHAR})

感谢你的阅读,希望你对“mybatis如何调用mysql存储过程”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mybatis如何调用mysql存储过程

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

下载Word文档

猜你喜欢

mybatis如何调用mysql存储过程

这篇“mybatis如何调用mysql存储过程”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“mybatis如何调用mysql存储过程”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇
2023-06-26

mysql如何调用存储过程

在MySQL中调用存储过程可以使用CALL语句。语法如下:```CALL procedure_name([parameter1, parameter2, ...]);```其中,procedure_name是存储过程的名称,paramete
2023-08-11

PHP如何调用MySQL存储过程

这篇文章主要介绍了PHP如何调用MySQL存储过程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP如何调用MySQL存储过程文章都会有所收获,下面我们一起来看看吧。什么是MyS
2023-04-21

Mybatis调用MySQL存储过程的简单实现

1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该
2023-05-31

我们如何调用MySQL存储过程?

借助CALL语句,我们可以调用MySQL存储过程。为了让它理解,我们正在调用 allrecords() 存储过程 -mysql> CALL allrecords();+------+---------+------------+-----
2023-10-22

mybatis怎么调用oracle存储过程

在MyBatis中调用Oracle存储过程可以通过使用select或update语句执行存储过程的方式来实现。以下是一个示例: