在 SSM 框架中,需要调用存储过程,与平常的 Dao 接口调用相比,调用存储过程有什么变化呢?
在我的例子中,框架是已经搭建好的,这里只是展示 Dao 层和 mapper 中的配置。
mapper 文件中的 SQL 配置如下:
<select id="callWorkflow" parameterType="map" statementType="CALLABLE">
call SP_WORKFLOW(
#{pteNo,mode=IN,jdbcType=VARCHAR},
#{busType,mode=IN,jdbcType=VARCHAR},
#{operate,mode=IN,jdbcType=VARCHAR},
#{errCode,mode=OUT,jdbcType=VARCHAR},
#{errMsg,mode=OUT,jdbcType=VARCHAR}
</select>
Dao层的接口定义如下:
Map<String,Object> callWorkflow(Map<String, Object> map);
存储过程定义的如下:
CREATE OR REPLACE PROCEDURE "SP_WORKFLOW"(
PTE_NO VARCHAR2,
BUS_TYPE VARCHAR2,
operate varchar2,
ERR_CODE OUT VARCHAR2,
ERR_MSG OUT VARCHAR2)
在Mybatis中输入参数parameterType有两种类型,分别是简单类型和对象类型。表达方式也分两种,分别是#{} 和 ${}。
#{}自动给String类型加上’’(自动类型转换)
${}原样输出,但是适合于 动态排序(动态字段),如果输入类型是String类型,需要在外部加单引号
简单类型(8个基本类型+Sring)使用#{}表示时可以在{}里面写任意值,使用${}表示时{}里...
笔者所在项目需要一个统计本机构近6月收入情况(分两种)、本机构下级机构收入情况的需求,数据量为百万级。
具体需求是时间、机构都不确定,可为入参。 综合考虑后决定使用后台存储过程统计。
基础表结构如下:(本功能只用到红框部分)
1.创建用于返回数据的游标:
create or replace package clf_yxfx
type type_cursor is re...
需求:本系统接收第三方系统发送过来的告警,当系统里面没有该告警时,新写出一条告警到alerttab,当有该告警时,将alerttab对应的告警信息写入alerthistab,告警表对应的该条信息删除.有该告警的时候,如果告警级别升高.则修改告警信息.1.创建存储过程DELIMITER $$
drop PROCEDURE if exists AlertMapping;
CREATE PROCEDUR...
public String[] updateStatus(ReceiveEntity receiveEntity){
String id = super.save(receiveEntity);
Map<String,Object> map = new HashMap<S...
最近项目要用Sybase数据库实现分页,第一次使用Sybase数据库,也是第一次使用他的存储过程。2个多小时才调用成功,在此记录:
项目架构:SSM
1、Sybase本身不支持分页操作,需要写存储过程来调用,这是很坑的。存储过程的内容暂且放下,
存储过程名:query_xxx_record_detail
输入输出参数如下:9个输入,5个输出
--input
@terminal_no ...
Source Server : localMysql
Source Server Version : 50628
Source Host : 127.0.0.1:3306
Source Database : testmysql
Target Server Type