mybatis mysql存储过程返回值_mybatis调用存储过程获得取返回值

本文介绍了如何在MyBatis中调用MySQL存储过程并获取返回值。通过Map参数传递,设置不同参数模式(IN, OUT),在Mapper中定义方法调用存储过程。同时,展示了两种不同的调用方式,并提醒在切换数据源时,调用存储过程不应开启事务。" 133505214,19974238,Markdown语法在后端开发中的应用,['后端开发'],"['Markdown', '后端开发', '语法', '标题', '列表', '代码块']
摘要由CSDN通过智能技术生成

总体思路:map传值

controller:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

Map m=new HashMap();

m.put("name", 'zs');

m.put("password", '55555');

cardservice.bindCard(m);

JSONObject json=newJSONObject();//获得返回值

json.put("msg", m.get("msg"));

json.put("result", m.get("result"));

View Code

service:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@Overridepublic Object bindCard(Mapm) {try{returncardMapper.bindCard(m);

}catch(Exception e) {

e.printStackTrace();return new HashMap();

}

}

View Code

mapper:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

Object bindCard(Map map) throwsException;

{call P_CardBindIdCardNo(

#{name,mode=IN,jdbcType=VARCHAR},

#{password,mode=IN,jdbcType=VARCHAR},

#{result,mode=OUT,jdbcType=BIT},

#{msg,mode=OUT,jdbcType=VARCHAR}

)}

]]>

View Code

20180522另一种方法:

mapper:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

List> getAnswerByModulesId(@Param("modulesId")int modulesId,@Param("patientCode")String patientCode) throwsException;EXEC getAnswerByModulesId #{modulesId},#{patientCode}

View Code

service

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

List> getQuestionAnswerByModulesId(intmodulesId,String patientCode);

@Overridepublic List> getQuestionAnswerByModulesId(intmodulesId,String patientCode) {try{returnnaireMapper.getAnswerByModulesId(modulesId,patientCode);

}catch(Exception e) {

logger.error("getQuestionByModulesId异常!",e);return new ArrayList>();

}

}

View Code

controller

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@RequestMapping(value = "/getQuestionAnswerByModulesId", method =RequestMethod.POST)

@ResponseBodypublic JSONObject getQuestionAnswerByModulesId(HttpServletRequest req,intmodulesId) {

JSONObject json= newJSONObject();try{

@SuppressWarnings("unchecked")

Map map=(Map)req.getSession().getAttribute("user");

List> 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);

}returnjson;

}

View Code

20180810:

注意,切换数据源时,调用存储过程时不能开启事物,否则不能切换数据源

20181023

今天要获得存储过程的返回值,但不想用call方法感觉太麻烦,网上也没找到资料,研究了一下可如此解决:

declare @result varchar(50)

exec updateHumanDisease #{0},#{1},#{2},@result output

select @result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值