MyBatis呼叫儲存過程
一、提出需求
查詢得到男性或女性的數量, 如果傳入的是0就女性否則是男性
二、準備資料庫表和儲存過程
create table p_user(
idint primary key auto_increment,
namevarchar(10),
sexchar(2)
);
insert into p_user(name,sex)values('A',"男");
insert into p_user(name,sex)values('B',"女");
insert into p_user(name,sex)values('C',"男");
#建立儲存過程(查詢得到男性或女性的數量, 如果傳入的是0就女性否則是男性)
DELIMITER $
CREATE PROCEDURE mybatis.ges_user_count(INsex_id INT, OUT user_count INT)
BEGIN
IF sex_id=0 THEN
SELECT COUNT(*) FROM mybatis.p_user WHEREp_user.sex='女' INTO user_count;
ELSE
SELECT COUNT(*) FROM mybatis.p_user WHEREp_user.sex='男' INTO user_count;
END IF;
END
$
#呼叫儲存過程
DELIMITER ;
SET @user_count = 0;
CALL mybatis.ges_user_count(1,@user_count);
[email protected]_count;三、建立實體類
public class User {
privateString id;
privateString name;
privateString sex;
}四、 userMapper.xml
<mapper
namespace="com.atguigu.mybatis.test7.userMapper"
<!--
查詢得到男性或女性的數量, 如果傳入的是0就女性否則是男性
CALL mybatis.get_user_count(1, @user_count);
-->
<select id="getCount"statementType="CALLABLE" parameterMap="getCountMap">
call mybatis.get_user_count(?,?)
</select>
<parameterMap type="java.util.Map"id="getCountMap">
<parameter property="sex_id"mode="IN" jdbcType="INTEGER"/>
<parameter property="user_count"mode="OUT" jdbcType="INTEGER"/>
</parameterMap>
</mapper>五、測試
Map<String,Integer> paramMap = newHashMap<>();
paramMap.put("sex_id", 0);
session.selectOne(statement,paramMap);
IntegeruserCount = paramMap.get("user_count");
System.out.println(userCount);