当前位置: 首页 > article >正文

数据库存储过程的后端调用(SQLServer)

项目中使用到了SQL Server的存储过程,其位于可编程性-存储过程,详细如下。

在这里插入图片描述

其内需要四个入参,为表名,列名,左固定值,剩下右边的长度。

本项目中需要生成10位验收单编号,其中前六位为年+月,后四位为表中没有的最小码。则入参:Sell_ysqk(表名),ysdbh(列名),year+month:如202410(左固定值),4(右剩余长度)。

在后端Mybatis中使用存储过程,此中用一种常用的HashMap的方式:

Mapper.xml中通过 call 存储过程名 调用。

  {call getMinSerial_withLeft(#{tableName}, #{columnName}, #{left}, #{rightLength})}

入参为HashMap,出参为String。(入参不知道是什么往往写map就行)

<select id="getYsdbh" parameterType="java.util.HashMap" statementType="CALLABLE" resultType="String">
    {call getMinSerial_withLeft(#{tableName}, #{columnName}, #{left}, {rightLength})}
</select>

在serviceImpl中,如下传参并接收返回值即可。

HashMap<String,Object> map=new HashMap<>();
map.put("tableName","Sell_ysqk");
map.put("columnName","ysdbh");
map.put("left",year+""+month);
map.put("rightLength",4); //Map中据入参名放好相应参数。
String ysdbh = mapper.getYsdbh(map);//将map传入方法,定义一个String来直接接收。

如果是有出参的,或者参数类型不同。xml中需要以mode,javatype注明。

  { call pro_yjjs_xmxx 
(#{nd, mode=IN, jdbcType=VARCHAR}, #{jd, mode=IN, jdbcType=VARCHAR}, #{htjzrq, mode=IN, jdbcType=VARCHAR}, #{kssj, mode=IN, jdbcType=VARCHAR}, #{jssj, mode=IN, jdbcType=VARCHAR}, #{zxjg, mode=OUT, jdbcType=VARCHAR}) }

在ServiceImpl中,put后要先调用完存储过程,出参已存储至map中,此时再get出参即可获取。

        paramsMap.put("nd", nd);
        paramsMap.put("jd", jd);
        paramsMap.put("htjzrq", htjzrq);
        paramsMap.put("kssj", ksJsDate.get("kssj"));
        paramsMap.put("jssj", ksJsDate.get("jssj"));
yjjsMapper.clearUpTempXmyjjs(paramsMap);
String zxjg=  paramsMap.get("zxjg")

http://www.kler.cn/a/375926.html

相关文章:

  • 推荐一款非常好用的3d设计软件:LuBan 3D
  • 如何在Linux下部署自己的ZFile开源网盘
  • 电脑软件:推荐一款免费且实用的电脑开关机小工具
  • 【C语言】宏封装的实用总结
  • CSS ——相关链接制作
  • QT 周期性的杀死一个进程(软件),一分钟后自动退出
  • [241102] Fedora Linux 41 正式发布 | Wasmer 5.0 发布
  • 【Apache Zookeeper】
  • Android 屏蔽\取消(禁止)下拉通知栏包括二级菜单下拉
  • Linux云计算 |【第五阶段】CLOUD-DAY6
  • C++中使用seekg函数进行随机读写
  • 基于SSM+VUE宠物医院后台管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • 金融文本情感分析模型
  • 前端之html(一)
  • 【2024最新开源】六足机器人控制算法
  • buck电源中电感大小的计算
  • Ubuntu:通过ssh链接另外一台Ubuntu
  • npm入门教程13:npm workspace功能
  • 【基础语法】Java Scanner hasNext() 和 hasNextLine() 的区别
  • HTML 基础标签——文本内容标签 <ul>、<ol>、<blockquote> 、<code> 等标签的用法详解
  • LeetCode100之二叉树的中序遍历(94)--Java
  • go语言中协程详解
  • Java8的新特性——Stream与completableFuture详解
  • 数字隔离器与光隔离器有何不同?---腾恩科技
  • 「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制
  • spreadjs实现类似于企业微信的协同提示