MyBatis调用存储过程

来源:互联网 发布:个人域名 gmail 编辑:程序博客网 时间:2024/05/05 11:24

一、提出需求

  查询得到男性或女性的数量, 如果传入的是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

<mappernamespace="com.atguigu.mybatis.test7.userMapper">

    <!--

        查询得到男性或女性的数量,如果传入的是0就女性否则是男性

        CALL mybatis.get_user_count(1,@user_count);

     -->

     <selectid="getCount"statementType="CALLABLE"parameterMap="getCountMap">

        call mybatis.get_user_count(?,?)

     </select>

     <parameterMaptype="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);





原创粉丝点击