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 获取Web项目相对webapp地址的实例

    Java 获取Web项目相对webapp地址的实例

    下面小编就为大家带来一篇Java 获取Web项目相对webapp地址的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 使用IntelliJ IDEA2020.2.2 x64 新建java项目并且输出Hello World

    使用IntelliJ IDEA2020.2.2 x64 新建java项目并且输出Hello World

    这篇文章主要介绍了使用IntelliJ IDEA2020.2.2 x64 新建java项目并且输出Hello World,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 关于两个BeanUtils.copyProperties()的用法及区别

    关于两个BeanUtils.copyProperties()的用法及区别

    这篇文章主要介绍了关于两个BeanUtils.copyProperties()的用法及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java实现电脑定时关机的方法

    java实现电脑定时关机的方法

    这篇文章主要介绍了java实现电脑定时关机的方法,首先通过java注册windows服务程序,再以一个简单的java程序实现定时关机的功能,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • java设计模式学习之代理模式

    java设计模式学习之代理模式

    这篇文章主要为大家详细介绍了java设计模式学习之代理模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Java内部类与匿名内部类

    Java内部类与匿名内部类

    这篇文章主要介绍了Java内部类与匿名内部类,内部类可以直接访问外部类的成员,包括私有成员。外部类要访问内部类的成员,必须要建立内部类的对象,更多相关内容可以参考下面文章内容
    2022-06-06
  • Springboot Maven打包跳过测试的五种方式小结

    Springboot Maven打包跳过测试的五种方式小结

    本文主要介绍了Springboot Maven打包跳过测试的五种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java中的定时器Timer详解

    Java中的定时器Timer详解

    这篇文章主要为大家详细介绍了Java定时器Timer的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 解决Java中OutOfMemoryError的问题

    解决Java中OutOfMemoryError的问题

    这篇文章主要介绍了解决Java中OutOfMemoryError的三种方法,需要的朋友可以参考下
    2015-09-09
  • Java Web开发之基于Session的购物商店实现方法

    Java Web开发之基于Session的购物商店实现方法

    这篇文章主要介绍了Java Web开发之基于Session的购物商店实现方法,涉及Java针对session的操作及数据库操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10

最新评论