一、提出需求
查询得到男性或女性的数量, 如果传入的是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);
SELECT@user_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);