java的MybatisPlus调用储存过程的返回数据问题

 更新时间:2023年12月13日 17:06:46   作者:kangfu_521  
这篇文章主要介绍了java的MybatisPlus调用储存过程的返回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1.调用存储过程

核心 statementType=”CALLABLE”

  • mybatis调用存储过程时需要指定statementType=”CALLABLE”,
  • 这样Mybatis内部中调用sql语句时将采用CallableStatementHandler,
  • 而CallableStatementHandler内部将使用CallableStatement来调用存储过程。

如果存储过程是有参数的,需要指定mode属性,可选值有IN、OUT和INOUT。

当mode为OUT或INOUT时必须同时指定jdbcType。

如下:

<select id="findName" statementType="CALLABLE" resultType="java.util.Map">
    {call findName(
        #{name, mode=IN, jdbcType=VARCHAR},
        #{email, mode=OUT, jdbcType=VARCHAR}
    )}
   </select>

或者

注意的问题:

每个#{}之间不能分行写,因为翻译过来会有空格,会报错。

最好写在一行吧,免得麻烦,就是不好看而已。

<!-- statementType 声明指向的是什么类型,其中CALLABLE是执行存储过程和函数的 -->
    <select id="callProcedure" parameterType="map" statementType="CALLABLE"> 
        {call PRO_GRAP(#{tabletag,mode=IN,jdbcType=VARCHAR},#{startdate,mode=IN,jdbcType=VARCHAR},#{enddate,mode=IN,jdbcType=VARCHAR})}
    </select>

2.测试调用

或者postman 请求,传递参数map

存储过程调用完成后会把输出参数赋值给入参,所以我们可以通过Map或实体类来接收输出参数,比如这里的name。

所以针对上述存储过程调用,我们可以在Mapper接口中定义如下方法:

测试:

        @Test	
	public void  callStatement() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", "zxn");
		try {
			userEmailMapper.findName(map);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(“execute=”+map.get("email"));
	}
/**
     * 参数和结果都在params中
     * @param params
     */
    void findName(Map<String, Object> params);

3.存储过程示例

DROP PROCEDURE IF EXISTS findName;      //如果存储过程存在,先删除掉存储过程
CREATE PROCEDURE findName(IN `name` varchar(200),OUT `email_address` varchar(255)),
SELECT `a`.`email` INTO email from user a WHERE `a`.`name`=`name`;	
END

4.验证结果

输出查询出来的信息

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java File类常用方法与文件过滤器详解

    Java File类常用方法与文件过滤器详解

    Java File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。本篇文章我们来讲解File类的常用方法与文件过滤器
    2022-04-04
  • SpringCloud断路器Hystrix原理及用法解析

    SpringCloud断路器Hystrix原理及用法解析

    这篇文章主要介绍了SpringCloud断路器Hystrix原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java设计模式之创建者模式简介

    Java设计模式之创建者模式简介

    这篇文章主要介绍了Java设计模式之创建者模式,需要的朋友可以参考下
    2014-07-07
  • java策略枚举:消除在项目里大批量使用if-else的优雅姿势

    java策略枚举:消除在项目里大批量使用if-else的优雅姿势

    这篇文章主要给大家介绍了关于Java彻底消灭if-else的8种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2021-06-06
  • spring-boot-starter-web更换默认Tomcat容器的方法

    spring-boot-starter-web更换默认Tomcat容器的方法

    Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的。下面小编给大家带来了spring-boot-starter-web更换默认Tomcat容器的方法,感兴趣的朋友跟随小编一起看看吧
    2019-04-04
  • 浅谈Java线程并发知识点

    浅谈Java线程并发知识点

    本文主要对Java线程并发的知识点进行简单介绍。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • springMVC+ajax实现文件上传且带进度条实例

    springMVC+ajax实现文件上传且带进度条实例

    本篇文章主要介绍了springMVC+ajax实现文件上传且带进度条实例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Java请求调用参数格式为form-data类型的接口代码示例

    Java请求调用参数格式为form-data类型的接口代码示例

    这篇文章主要给大家介绍了关于Java请求调用参数格式为form-data类型的接口的相关资料,文中给出了详细的代码示例,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Java Validation Api使用方法实例解析

    Java Validation Api使用方法实例解析

    这篇文章主要介绍了Java Validation Api使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 友盟 微信第三方登录示例

    友盟 微信第三方登录示例

    这篇文章主要介绍了友盟 微信第三方登录示例的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论