当前位置: 移动技术网 > IT编程>开发语言>Java > mybatis调用存储过程的实例代码

mybatis调用存储过程的实例代码

2019年07月19日  | 移动技术网IT编程  | 我要评论

一、提出需求

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

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

 create table p_user( 
   id int primary key auto_increment, 
   name varchar(10),
   sex char(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(in sex_id int, out user_count int)
 begin 
 if sex_id=0 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 = 0;
 call mybatis.ges_user_count(1, @user_count);
 select @user_count;

三、编辑usermapper.xml

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

<!-- 
     查询得到男性或女性的数量, 如果传入的是0就女性否则是男性
    -->
   <select id="getusercount" parametermap="getusercountmap" statementtype="callable">
     call mybatis.ges_user_count(?,?)
   </select>  
   <!--
     parametermap.put("sexid", 0);
     parametermap.put("usercount", -1);
   -->
   <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 test6 {
   
   @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", 1);
     parametermap.put("usercount", -1);
     sqlsession.selectone(statement, parametermap);
     integer result = parametermap.get("usercount");
     system.out.println(result);
     sqlsession.close();
   }
 }

总结

以上所述是小编给大家介绍的mybatis调用存储过程的实例代码,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网