mybatis调用存储过程的实例代码
一、提出需求
查询得到男性或女性的数量,如果传入的是0就女性否则是男性
二、准备数据库表和存储过程
createtablep_user(
idintprimarykeyauto_increment,
namevarchar(10),
sexchar(2)
);
insertintop_user(name,sex)values('A',"男");
insertintop_user(name,sex)values('B',"女");
insertintop_user(name,sex)values('C',"男");
--创建存储过程(查询得到男性或女性的数量,如果传入的是0就女性否则是男性)
DELIMITER$
CREATEPROCEDUREmybatis.ges_user_count(INsex_idINT,OUTuser_countINT)
BEGIN
IFsex_id=0THEN
SELECTCOUNT(*)FROMmybatis.p_userWHEREp_user.sex='女'INTOuser_count;
ELSE
SELECTCOUNT(*)FROMmybatis.p_userWHEREp_user.sex='男'INTOuser_count;
ENDIF;
END
$
--调用存储过程
DELIMITER;
SET@user_count=0;
CALLmybatis.ges_user_count(1,@user_count);
SELECT@user_count;
三、编辑userMapper.xml
编辑userMapper.xml文件,添加如下的配置项
CALLmybatis.ges_user_count(?,?)
四、编写单元测试代码
packageme.gacl.test;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importme.gacl.custom.model.ConditionUser;
importme.gacl.domain.User;
importme.gacl.util.MyBatisUtil;
importorg.apache.ibatis.session.SqlSession;
importorg.junit.Test;
/**
*@authorgacl
*测试调用存储过程
*/
publicclassTest6{
@Test
publicvoidtestGetUserCount(){
SqlSessionsqlSession=MyBatisUtil.getSqlSession();
/**
*映射sql的标识字符串,
*me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
*getUserCount是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
Stringstatement="me.gacl.mapping.userMapper.getUserCount";//映射sql的标识字符串
MapparameterMap=newHashMap();
parameterMap.put("sexid",1);
parameterMap.put("usercount",-1);
sqlSession.selectOne(statement,parameterMap);
Integerresult=parameterMap.get("usercount");
System.out.println(result);
sqlSession.close();
}
}
总结
以上所述是小编给大家介绍的mybatis调用存储过程的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!