总体思路: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>