mybatis调用存储过程获得取返回值
总体思路:map传值
controller:
Map<String,Object> m=new HashMap<String,Object>();
m.put("name", 'zs');
m.put("password", '55555');
cardservice.bindCard(m);
JSONObject json=new JSONObject();
//获得返回值
json.put("msg", m.get("msg"));
json.put("result", m.get("result"));
service:
@Override
public Object bindCard(Map<String,Object> m) {
try {
return cardMapper.bindCard(m);
} catch (Exception e) {
e.printStackTrace();
return new HashMap<String,Object>();
}
}
mapper:
Object bindCard(Map<String, Object> map) throws Exception; <select id="bindCard" parameterType="map" statementType="CALLABLE" resultType="java.lang.Object">
<![CDATA[
{call P_CardBindIdCardNo(
#{name,mode=IN,jdbcType=VARCHAR},
#{password,mode=IN,jdbcType=VARCHAR},
#{result,mode=OUT,jdbcType=BIT},
#{msg,mode=OUT,jdbcType=VARCHAR}
)}
]]>
</select>
20180522另一种方法:
mapper:
List<Map<String, Object>> getAnswerByModulesId(@Param("modulesId")int modulesId,@Param("patientCode")String patientCode) throws Exception;
<select id="getAnswerByModulesId" resultType="map" statementType="CALLABLE" >
EXEC getAnswerByModulesId #{modulesId},#{patientCode}
</select>
service
List<Map<String, Object>> getQuestionAnswerByModulesId(int modulesId,String patientCode); @Override
public List<Map<String, Object>> getQuestionAnswerByModulesId(int modulesId,String patientCode) {
try {
return naireMapper.getAnswerByModulesId(modulesId,patientCode);
} catch (Exception e) {
logger.error("getQuestionByModulesId异常!",e);
return new ArrayList<Map<String,Object>>();
}
}
controller
@RequestMapping(value = "/getQuestionAnswerByModulesId", method = RequestMethod.POST)
@ResponseBody
public JSONObject getQuestionAnswerByModulesId(HttpServletRequest req,int modulesId) {
JSONObject json = new JSONObject();
try {
@SuppressWarnings("unchecked")
Map<String,Object> map=(Map<String,Object>)req.getSession().getAttribute("user");
List<Map<String, Object>> list = naireService.getQuestionAnswerByModulesId(modulesId,(String)map.get("PatientCode"));
json.put("questionList", list);
json.put("result", true);
json.put("msg", "获取相应模块成功!");
} catch (Exception e) {
json.put("result", false);
json.put("msg", "获取相应模块失败!");
logger.error("getQuestionByModulesId异常!", e);
}
return json;
}
20180810:
注意,切换数据源时,调用存储过程时不能开启事物,否则不能切换数据源
20181023
今天要获得存储过程的返回值,但不想用call方法感觉太麻烦,网上也没找到资料,研究了一下可如此解决:
<select id="getUpdateHumanDisease" resultType="java.lang.String">
declare @result varchar(50)
exec updateHumanDisease #{0},#{1},#{2},@result output
select @result
</select>
mybatis调用存储过程获得取返回值的更多相关文章
- Java和Ibatis调用存储过程并取得返回值详解
Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法, ...
- mybatis调用存储过程,获取返回的游标
将调用存储过程参数放入map中,由于返回的游标中包含很多参数,所以再写一个resultmap与之对应,类型为hashmap.设置返回的jdbcType=CURSOR,resultMap设置为id对应的 ...
- MyBatis调用存储过程,含有返回结果集、return参数和output参数
Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ...
- C# 连接Oracle,并调用存储过程(存在返回值),C# 调用sql存储过程
1.获取Oracle表格信息 public OracleHelpers(string ConnStr) { ConnectionString = ConnStr; conn = new OracleC ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...
- 定时ping取返回值并绘图
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- MyBatis基础:MyBatis调用存储过程(6)
1. 存储过程准备 CREATE PROCEDURE sp_task ( IN userId INT ) BEGIN SELECT * FROM task WHERE user_id = userId ...
- 使用mybatis调用存储过程(注解形式和配置文件形式)
最近在看资料中涉及到mybatis,突然想到mysql中的视图.存储过程.函数.现将在使用mybatis调用mysql的存储过程使用总结下: 使用的环境:mybatis3.4.6,mysql 5.6, ...
随机推荐
- 7-17 Hashing(25 分)
The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...
- StreamSets 部署 Pipelines 到 SDC Edge
可以使用如下方法: 下载edge 运行包并包含pipeline定义文件. 直接发布到edge 设备. 在data colelctor 机器配置并配置了edge server 地址(主要需要网络可访问) ...
- docker 数据卷 ---- 进阶篇
笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...
- 【转】嵌入式Linux文件系统启动脚本及分析
原文网址:http://www.linuxidc.com/Linux/2011-03/33728.htm 在内核初始化完成后,嵌入式linux 文件系统的启动过程主要包含以下几个步骤: 1. 执行/s ...
- 差分进化算法-python实现
DEIndividual.py import numpy as np import ObjFunction class DEIndividual: ''' individual of differen ...
- Visual Studio Community 2013 中文语言包-离线安装版
vs_langpack.exe /layout 命令运行或者批处理运行. 转自:http://www.tuicool.com/articles/uMzqAnA 现成安装包下载地址:链接: http:/ ...
- Fragment 横竖屏切换问题
转自:http://my.oschina.net/u/614511/blog/76444 在默认情况下当发生横竖屏切换时,当前Activity中的fragment都会通过Fragment.instan ...
- HDU 2201 熊猫阿波的故事
熊猫阿波的故事 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Bootstrap-Plugin:折叠(Collapse)插件
ylbtech-Bootstrap-Plugin:折叠(Collapse)插件 1.返回顶部 1. Bootstrap 折叠(Collapse)插件 折叠(Collapse)插件可以很容易地让页面区域 ...
- mysql-12序列使用
mysql序列是一组整数:1,2,3....,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段自动增加,就可以使用mysql序列来实现. 使用auto_increment来定义列 drop ...