关于mybatis调用存储过程获取返回值问题

网友投稿 631 2022-11-07

关于mybatis调用存储过程获取返回值问题

关于mybatis调用存储过程获取返回值问题

总体思路:map传值

controller:

Map m=new HashMap();

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 m) {

try {

return cardMapper.bindCard(m);

} catch (Exception e) {

e.printStackTrace();

return new HashMap();

}

}

mapper:

Object bindCard(Map map) throws Ehttp://xception;

<![CDATA[

{call P_CardBindIdCardNo(

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

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

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

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

)}

]]>

20180522另一种方法:

mapper:

List> getAnswerByModulesId(@Param("modulesId")int modulesId,@Param("patientCode")String patientCode) throws Exception;

EXEC getAnswerByModulesId #{modulesId},#{patientCode}

service

List> getQuestionAnswerByModulesId(int modulesId,String patientCode);

@Override

public List> getQuestionAnswerByModulesId(int modulesId,String patientCode) {

try {

return naireMapper.getAnswerByModulesId(modulesId,patientCode);

} catch (Exception e) {

logger.error("getQuestionByModulesId异常!",e);

return new ArrayList>();

}

}

controller

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

@ResponseBody

public JSONObject getQuestionAnswerByModulesId(HttpServletRequest req,int modulesId) {

JSONObject json = new JSONObject();

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", "获取相http://应模块成功!");

} catch (Exception e) {

json.put("result", false);

json.put("msg", "获取相应模块失败!");

logger.error("getQuestionByModulesId异常!", e);

}

return json;

}

20180810:

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

20181023

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

declare @result varchar(50)

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

select @result

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Redis的主从复制和哨兵机制
下一篇:GIS开发扫盲贴--地理坐标系
相关文章

 发表评论

暂时没有评论,来抢沙发吧~