推荐文章:http://www.iteye.com/topic/1132302
http://yhjhappy234.blog.163.com/blog/static/316328322012455714892/
http://www.iteye.com/problems/85525
http://www.blogjava.net/zljpp/archive/2012/04/15/374383.html
这里写的是后台数据库使用Mysql,
存储过程定义:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 PROCEDURE deyestest.procedure1(OUT json VARCHAR(2000)) 2 BEGIN DECLARE v_id INT; 3 DECLARE v_userName VARCHAR(155); 4 DECLARE v_mobileNum VARCHAR(55); 5 DECLARE v_tmp VARCHAR(1000); 6 DECLARE v_info VARCHAR(2000); 7 DECLARE v_info2 VARCHAR(2000); 8 DECLARE v_int INT; 9 10 11 DECLARE done INT DEFAULT 0; 12 13 14 DECLARE myCursor CURSOR FOR 15 SELECT userId 16 , userName 17 , mobileNum 18 FROM 19 user_info 20 ORDER BY 21 userId 22 LIMIT 23 2, 10; 24 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; 25 26 OPEN myCursor; 27 SET v_info = concat('['); 28 FETCH myCursor INTO v_id, v_userName, v_mobileNum; 29 REPEAT 30 31 SET v_tmp = concat('{', v_id, ',', v_userName, ',', v_mobileNum, '}', ','); 32 SET v_info = concat(v_info, v_tmp); 33 FETCH myCursor INTO v_id, v_userName, v_mobileNum; 34 UNTIL done 35 END REPEAT; 36 SET NAMES 'utf8'; 37 SET v_int = char_length(v_info); 38 39 SET v_info = left(v_info COLLATE utf8_bin, v_int - 1); 40 41 SET v_info2 = concat(v_info, ']'); 42 CLOSE myCursor; 43 SELECT v_info2 44 INTO 45 json; 46 END
java中Mapper配置:
<select id="getByProcedure2" statementType="CALLABLE"> { call procedure1( #{json,jdbcType=VARCHAR,javaType=java.lang.String,mode=OUT} ) } </select>
javaMapper代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public interface PersonMapper { 2 public void getByProcedure2(Map<String,Object> map); 3 }
java调用测试
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static void main(){ 2 HashMap<String, Object> hashMap = new HashMap<String, Object>(); 3 4 wuShuaiMapper.getByProcedure2(hashMap); 5 System.out.println(hashMap.get("json")); 6 7 }
如果使用Map作为进行java与数据库存储过程的数据输入与输出的参数,只需要配置select标签中“statementType="CALLABLE"”,然后在存储过程中的输出参数使用如下方式:SELECT v_info2 INTO json,其中json是存储过程中的输出参数。