MyBatis学习教程(六)-调用存储过程
程序员文章站
2024-03-11 18:51:43
一、提出需求
查询得到男性或女性的数量, 如果传入的是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学习教程(六)-调用存储过程,希望对大家有所帮助