总体思路: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调用存储过程获取返回值的文章就介绍到这了,更多相关mybatis获取返回值内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!