1. 程式人生 > >MyBatis呼叫儲存過程

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);