在工作中经常会有需要通过java去调用存储过程的情况,实际工作中可能会有N多个存储过程,各自实现相应的业务场景,而我们需要在不同的地方知道调用某个存储过程,比如从前端请求某个存储过程,或者别的业务模块通过接口调用某个存储过程,那么能不能写个通用的方法去完成,答案是肯定的,此处以mysql为例,废话不多上代码:

mapper类定义方法

public interface SysUtilMapper {/*** * @param param 存储过程参数,包括存储过程名称 输入输入参数表达式 输入参数值* @return*/Map<String,Object> callProcedure(Map<String,Object> param);
}

Mapper.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.*.*.mapper.SysUtilMapper"><!--  存储过程调用 --><select id="callProcedure" parameterType="java.util.Map"  statementType="CALLABLE" resultType="java.util.Map">{call ${procName} (${paramExp})}</select>
</mapper>

Service定义

@Service
public class SysUtilService {@Autowiredprivate SysUtilMapper  utilMapper;public Map<String,Object> callProcedure(Map<String,Object> param){return utilMapper.callProcedure(param);}
}

接下来就是调用了

    /**** @param prcoName存储过程名称* @return*/@ApiOperation(value = "存储过程调用", notes = "存储过程调用")@PostMapping("/doCallProc")@ResponseBodypublic AjaxResult doCallProc(@RequestParam String prcoName){log.info("执行存储过程调用");//存储过程调用Map<String,Object> procParam=new HashMap<>();//存储过程名称procParam.put("procName",prcoName);//存储过程参数 如果是带有输入输出参数的存储过程 拼接参数字符串:一个参数 '#            {paramName,mode=modeType,jdbcType=Type}'// modeType: IN OUT  Type:VARCHAR 等//同时 有入参的话 map在插入 参数名:参数值 的键值对procParam.put("paramExp","#{in_value,mode=IN,jdbcType=VARCHAR},#{out_code,mode=OUT,jdbcType=VARCHAR},#{out_desc,mode=OUT,jdbcType=VARCHAR}");procParam.put("in_value","测试输入值");Map<String,Object> result=utilService.callProcedure(procParam);System.out.println("执行结果"+result.get("out_code")+result.get("out_desc"));}

方法中外部输入的只有存储过程名称,当然输入参数也可从外部输入,相应增加即可。

至此,大功告成!

java 调用 mysql存储过程相关推荐

  1. java 调用mysql存储过程

    1 import java.sql.CallableStatement; 2 import java.sql.Connection; 3 import java.sql.DriverManager; ...

  2. Java调用MySQL并返回数据_Java调用MySQL存储过程并获得返回值的方法

    本文实例讲述了Java调用MysqL存储过程并获得返回值的方法.分享给大家供大家参考.具体如下: private void empsInDept(Connection myConnect,int de ...

  3. Java调用mysql的存储过程

    在之前写过一篇博客是如何mysql如何创建存储过程,在这一节中,我们是在原来的基础上来进一步的学习,如何在Java程序中使用Java代码来调用mysql存储过程. mysql创建存储过程:http:/ ...

  4. 【Java】 # 使用java调用MySQL的函数、存储过程

    1. 存储过程 1.1 创建函数(代码创建) -- 修改 MySQL 默认的语句结束符号 delimiter $-- 创建函数 CREATE FUNCTION add_sum(num1 INT, nu ...

  5. hibernate mysql 存储过程_hibernate调用mysql存储过程

    hibernate调用mysql存储过程 在最近的项目中,碰到一小段数据库数据分析的程序,需要结合多张表联合查询或涉及到子查询,项目主要采用的java ee开发,使用了hibernate框架,由于这些 ...

  6. jsp实现mysql存储过程_JSP调用MySQL存储过程收藏

    JSP调用MySQL存储过程收藏 1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义序列的语法如下所示: {c ...

  7. jdbc mysql 存储过程查询数据_jdbc调用mysql存储过程实现代码

    1. 创建存储过程 建立一个MySQL的存储过程 add_pro 复制代码 代码如下: delimiter // drop procedure add_pro // create procedure ...

  8. vb获得mysql的值,VB.NET调用MySQL存储过程并获得返回值的方法

    本文实例讲述了VB.NET调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体实现方法如下: Dim myConnectionString As String = "Data ...

  9. mysql存储过程 php_PHP调用MYSQL存储过程实例

    说一下 在PHP页面中调用MYSQL存储过程的方法 以下是几个例子 仅供参考 实例一:无参的存储过程 $conn = mysql_connect('localhost','root','root') ...

最新文章

  1. 关于大型网站技术演进的思考(二十)--网站静态化处理—web前端优化—中(12)...
  2. fedora,linux mint 命令行(终端)打开目录
  3. stl 基于哈希的map c++_【C++】一文带你入门 STL
  4. 阿里技术大神:你没做错啥,你错在啥都没做
  5. 路畅安卓最新固件升级_Airpods连接安卓手机音量异常(airpods固件升级)
  6. 基本类型与字符串的相互转换
  7. python单例模式和装饰器
  8. facade(外观)模式
  9. 计算机输入法如何显示在桌面快捷方式,笔记本win7系统如何设置搜狗手写输入法桌面快捷方式...
  10. 每天学点5G-5G NEF
  11. 什么是CGCS2000坐标系
  12. matlab 图例自定义,matlab实现自定义曲线图以及图例
  13. 【影音工具集合】本文记录了影音工作者常用的好用的工具软件(持续更新中)
  14. 传世单机版怎么建立服务端?
  15. 中泰证券何波:XTP为量化而生!
  16. 如何转换为YOLO txt格式
  17. 阿里巴巴的P8Java架构师都是一群什么样的存在?
  18. SECS/GEM/GEM300/EAP 讲解(三)半导体协议
  19. WEB——Request与Response
  20. redis数据丢失及解决

热门文章

  1. python管理系统设计_基于Python和Django框架的物联网智能设备管理系统的设计与实现
  2. Vue+Element 实现订单列表【管理端】02
  3. My Interview
  4. Python必学基础
  5. 自考《管理经济学》之宏观理解
  6. 小白渗透0-1:BlackMarket靶场渗透记录
  7. nuc977 配置nfs
  8. 带电检测必要性_绝缘电阻测试的重要性
  9. asp.net 加入html,css,js的步骤与错误总结
  10. python的函数式编程实例_函数式编程例子