总体思路: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调用存储过程获得取返回值的更多相关文章

  1. Java和Ibatis调用存储过程并取得返回值详解

    Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法, ...

  2. mybatis调用存储过程,获取返回的游标

    将调用存储过程参数放入map中,由于返回的游标中包含很多参数,所以再写一个resultmap与之对应,类型为hashmap.设置返回的jdbcType=CURSOR,resultMap设置为id对应的 ...

  3. MyBatis调用存储过程,含有返回结果集、return参数和output参数

    Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ...

  4. C# 连接Oracle,并调用存储过程(存在返回值),C# 调用sql存储过程

    1.获取Oracle表格信息 public OracleHelpers(string ConnStr) { ConnectionString = ConnStr; conn = new OracleC ...

  5. Yii2.0调用sql server存储过程并获取返回值

    1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...

  6. 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值

    关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...

  7. 定时ping取返回值并绘图

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  8. MyBatis基础:MyBatis调用存储过程(6)

    1. 存储过程准备 CREATE PROCEDURE sp_task ( IN userId INT ) BEGIN SELECT * FROM task WHERE user_id = userId ...

  9. 使用mybatis调用存储过程(注解形式和配置文件形式)

    最近在看资料中涉及到mybatis,突然想到mysql中的视图.存储过程.函数.现将在使用mybatis调用mysql的存储过程使用总结下: 使用的环境:mybatis3.4.6,mysql 5.6, ...

随机推荐

  1. mongodb配置数据库文件夹,创建服务

    配置步骤 1.新建data文件夹,并在data下创建db及log文件夹 2.在mongodb安装目录下新增mongod.cfg文件,配置如下 systemLog:    destination: fi ...

  2. I.MX6 CAAM

    /********************************************************************************* * I.MX6 CAAM * 说明 ...

  3. python爬虫错误

    错误描述 TypeError: list indices must be integers or slices, not str 错误缘由 取标签属性的时候, find_all()函数与find()函 ...

  4. 7-17 Hashing(25 分)

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

  5. HDU 4825 字典树

    HDU 4825 对于给定的查询(一个整数),求集合中和他异或值最大的值是多少 按位从高位往低位建树,查询时先将查询取反,然后从高位往低位在树上匹配,可以匹配不可以匹配都走同一条边(匹配表示有一个异或 ...

  6. nodejs json-t 基本测试

    安装npm包 npm i json-templater or yarn add json-templater 基本代码 var render = require('json-templater/str ...

  7. google chrome浏览器离线小恐龙游戏刷分bug

    F12打开开发者工具->console->输入如下代码,分数要多少有多少 Runner.instance_.setSpeed(99999); 试试 瞬间 满分window.tempGame ...

  8. codis须知

    codis是豌豆荚team出的一个redis集群,和官方的集群区别的地方在于 基于proxy,官方是基于gossip codis所有的读写都通过proxy,对于前端业务是透明的 官方的是读写发现在某个 ...

  9. linux上安装Qt4.8.6+QtCreator4.0.3

    一.Qt简介 Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架.它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能.Qt很容易扩展,并且允许真正地组件编程. 准备工作 ...

  10. 马士兵Spring-声明式事务管理-annotation

    1.事务加在DAO层还是service层? service中可能多涉及多种DAO的操作,比如存了一个User之后,需要保存一条日志信息:如果在DAO中分别设置事务的话,一个DAO下面方法抛出异常了,但 ...