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

发布时间:2020-10-18 05:01:45 作者:动力节点
来源:脚本之家 阅读:183

一、提出需求

  查询得到男性或女性的数量, 如果传入的是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调用存储过程的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!

推荐阅读:
  1. mybatis调用oracle存储过程
  2. PHP 调用存储过程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis 存储过程

上一篇:6000个边缘Kubernetes节点驱动城市80万次智能停车,如何成为可能?

下一篇:Oracle 12.2监听无法启动解决方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》