Mybatis之基於XML的調用存儲過程
阿新 • • 發佈:2018-01-29
count put state pri parameter 創建 oca 基於 XML
一、返回單個值
1、存儲過程準備
這裏先創建一個存儲過程,傳入參數為age,傳出參數為count。然後先測試一下是否正確。
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_get_usercountbyage`(in age int,out user_count int) BEGIN select count(1) into user_count from user a where a.age=age; ENDView Code
DELIMITER ; SET @user_count = 0; CALL mybatis.pro_get_usercountbyage(View Code27, @user_count); SELECT @user_count;
2、XML配置
這裏配置傳入參數的映射parameterMap,statementType,在parameterMap中設置參數的方向。
<select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE"> CALL pro_get_usercountbyage(?,?) </select> <parameterMap type="java.util.Map"View Codeid="getUserCountMap"> <parameter property="age" mode="IN" jdbcType="INTEGER"/> <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/> </parameterMap>
3、測試
這裏傳入參數age=27,然後獲取返回的結果值。
String statement="Cuiyw.MyBatis.DBMapping.UserMapper.getUserCount"; MapView Code<String,Integer > map=new HashMap<String,Integer>(); map.put("age", 27); session.selectOne(statement, map); int result = map.get("usercount"); System.out.println(result);
二、返回列表
1.返回列表的和返回多個值的基本沒太大區別,只是有一個地方需要註意,就是在存儲過程select的列名要和resultMap的一致,我就踩到坑了在這個地方。存儲過程還是在上面存儲過程上改的。返回table。
DELIMITER ; CALL mybatis.pro_get_usercountbyage(27); DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_get_usercountbyage`(in age int) BEGIN select * from user a where a.age=age; END$$ DELIMITER ;View Code
2.xml配置
這個只是增加了resultMap
<select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE" resultMap="userResult"> CALL pro_get_usercountbyage(?) </select> <parameterMap type="java.util.Map" id="getUserCountMap"> <parameter property="age" mode="IN" jdbcType="INTEGER"/> </parameterMap>View Code
3.測試
String statement="Cuiyw.MyBatis.DBMapping.UserMapper.getUserCount"; Map<String,Integer > map=new HashMap<String,Integer>(); map.put("age", 27); List<User>users= session.selectList(statement, map); for(int i=0;i<users.size();i++) { System.out.println(users.get(i).toString()); }View Code
Mybatis之基於XML的調用存儲過程