欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MyBatis学习教程(六)-调用存储过程

程序员文章站 2024-03-12 11:26:26
一、提出需求   查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二、准备数据库表和存储过程 create table p_user(...

一、提出需求

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

二、准备数据库表和存储过程

create table p_user( 
id int primary key auto_increment, 
name varchar(),
sex char()
); 
insert into p_user(name,sex) values('a',"男"); 
insert into p_user(name,sex) values('b',"女"); 
insert into p_user(name,sex) values('c',"男"); 
-- 创建存储过程(查询得到男性或女性的数量, 如果传入的是就女性否则是男性)
delimiter $
create procedure mybatis.ges_user_count(in sex_id int, out user_count int)
begin 
if sex_id= then
select count(*) from mybatis.p_user where p_user.sex='女' into user_count;
else
select count(*) from mybatis.p_user where p_user.sex='男' into user_count;
end if;
end 
$
-- 调用存储过程
delimiter ;
set @user_count = ;
call mybatis.ges_user_count(, @user_count);
select @user_count; 

三、编辑usermapper.xml

  编辑usermapper.xml文件,添加如下的配置项

<!-- 
查询得到男性或女性的数量, 如果传入的是就女性否则是男性
-->
<select id="getusercount" parametermap="getusercountmap" statementtype="callable">
call mybatis.ges_user_count(?,?)
</select>
<!--
parametermap.put("sexid", );
parametermap.put("usercount", -);
-->
<parametermap type="java.util.map" id="getusercountmap">
<parameter property="sexid" mode="in" jdbctype="integer"/>
<parameter property="usercount" mode="out" jdbctype="integer"/>
</parametermap> 

四、编写单元测试代码

package me.gacl.test;
import java.util.hashmap;
import java.util.list;
import java.util.map;
import me.gacl.custom.model.conditionuser;
import me.gacl.domain.user;
import me.gacl.util.mybatisutil;
import org.apache.ibatis.session.sqlsession;
import org.junit.test;
/**
* @author gacl
* 测试调用存储过程
*/
public class test {
@test
public void testgetusercount(){
sqlsession sqlsession = mybatisutil.getsqlsession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.usermapper是usermapper.xml文件中mapper标签的namespace属性的值,
* getusercount是select标签的id属性值,通过select标签的id属性值就可以找到要执行的sql
*/
string statement = "me.gacl.mapping.usermapper.getusercount";//映射sql的标识字符串
map<string, integer> parametermap = new hashmap<string, integer>();
parametermap.put("sexid", );
parametermap.put("usercount", -);
sqlsession.selectone(statement, parametermap);
integer result = parametermap.get("usercount");
system.out.println(result);
sqlsession.close();
}
}

以上所述是小编给大家介绍的mybatis学习教程(六)-调用存储过程,希望对大家有所帮助