总体思路:map传值
controller:
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:
@Overridepublic Object bindCard(Mapm) {try{returncardMapper.bindCard(m);
}catch(Exception e) {
e.printStackTrace();return new HashMap();
}
}
View Code
mapper:
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:
List> getAnswerByModulesId(@Param("modulesId")int modulesId,@Param("patientCode")String patientCode) throwsException;EXEC getAnswerByModulesId #{modulesId},#{patientCode}
View Code
service
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
@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