一、提出需求

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

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

  1. 1 create table p_user(
  2. 2 id int primary key auto_increment,
  3. 3 name varchar(10),
  4. 4 sex char(2)
  5. 5 );
  6. 6
  7. 7 insert into p_user(name,sex) values('A',"男");
  8. 8 insert into p_user(name,sex) values('B',"女");
  9. 9 insert into p_user(name,sex) values('C',"男");
  10. 10
  11. 11 -- 创建存储过程(查询得到男性或女性的数量, 如果传入的是0就女性否则是男性)
  12. 12 DELIMITER $
  13. 13 CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
  14. 14 BEGIN
  15. 15 IF sex_id=0 THEN
  16. 16 SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;
  17. 17 ELSE
  18. 18 SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;
  19. 19 END IF;
  20. 20 END
  21. 21 $
  22. 22
  23. 23 -- 调用存储过程
  24. 24 DELIMITER ;
  25. 25 SET @user_count = 0;
  26. 26 CALL mybatis.ges_user_count(1, @user_count);
  27. 27 SELECT @user_count;

三、编辑userMapper.xml

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

  1. 1 <!--
  2. 2 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性
  3. 3 -->
  4. 4 <select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
  5. 5 CALL mybatis.ges_user_count(?,?)
  6. 6 </select>
  7. 7
  8. 8 <!--
  9. 9 parameterMap.put("sexid", 0);
  10. 10 parameterMap.put("usercount", -1);
  11. 11 -->
  12. 12 <parameterMap type="java.util.Map" id="getUserCountMap">
  13. 13 <parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
  14. 14 <parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
  15. 15 </parameterMap>

四、编写单元测试代码

  1. 1 package me.gacl.test;
  2. 2
  3. 3 import java.util.HashMap;
  4. 4 import java.util.List;
  5. 5 import java.util.Map;
  6. 6
  7. 7 import me.gacl.custom.model.ConditionUser;
  8. 8 import me.gacl.domain.User;
  9. 9 import me.gacl.util.MyBatisUtil;
  10. 10 import org.apache.ibatis.session.SqlSession;
  11. 11 import org.junit.Test;
  12. 12
  13. 13 /**
  14. 14 * @author gacl
  15. 15 * 测试调用存储过程
  16. 16 */
  17. 17 public class Test6 {
  18. 18
  19. 19 @Test
  20. 20 public void testGetUserCount(){
  21. 21 SqlSession sqlSession = MyBatisUtil.getSqlSession();
  22. 22 /**
  23. 23 * 映射sql的标识字符串,
  24. 24 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
  25. 25 * getUserCount是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
  26. 26 */
  27. 27 String statement = "me.gacl.mapping.userMapper.getUserCount";//映射sql的标识字符串
  28. 28 Map<String, Integer> parameterMap = new HashMap<String, Integer>();
  29. 29 parameterMap.put("sexid", 1);
  30. 30 parameterMap.put("usercount", -1);
  31. 31 sqlSession.selectOne(statement, parameterMap);
  32. 32 Integer result = parameterMap.get("usercount");
  33. 33 System.out.println(result);
  34. 34 sqlSession.close();
  35. 35 }
  36. 36 }

MyBatis学习总结_06_调用存储过程的更多相关文章

  1. MyBatis学习总结(六)——调用存储过程(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013518.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存 ...

  2. MyBatis学习总结(六)——调用存储过程

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_ ...

  3. MyBatis学习总结(六)——调用存储过程

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...

  4. MyBatis学习笔记(六)——调用存储过程

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4270352.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据 ...

  5. 六:MyBatis学习总结(六)——调用存储过程

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...

  6. MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程

    虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...

  7. MySQL学习笔记:调用存储过程或函数报1418错误

    问题 MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DE ...

  8. MyBatis的学习总结:调用存储过程【参考】

    一.创建存储过程 存储过程的目的:统计edi_test_task 正在运行的任务和非运行的任务 CREATE DEFINER=`root`@`%` PROCEDURE `edihelper`.`SP_ ...

  9. 转载-MyBatis学习总结

    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合 孤傲苍狼 2015-02-07 00:09 阅读:89825 评论:54     MyBatis学习总结(七)——Myba ...

随机推荐

  1. 团队开发——第一篇scrum报告

    一.角色介绍 产品负责人(兼项目经理PM):王雪青 scrum master: 陆宇 开发团队:赵建松.张文冬.徐擎天 二.product backlog 1.买家登录后,显示各个小吃摊的信息,主要是 ...

  2. mongodb修改器

    mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...

  3. CSS3 filter10种特效整理

    -webkit-filter是css3的一个属性,Webkit率先支持了这几个功能,感觉效果很不错.一共有10种最基本的特效,下来这个DEMO很好的展示了这些效果: <!DOCTYPE html ...

  4. 怎么将java项目打包成双击就可以运行的jar包---fatjar

    fatjar下载地址:http://pan.baidu.com/s/1cQ01o 下载fatJar插件,解压缩后是一个.../plugins/(net...)把plugins下面的(net..)文件夹 ...

  5. WPS for ubuntu14

    QGtkStyle could not resolve GTK. Make sure you have installed the proper libraries. sudo apt-get ins ...

  6. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) D Bear and Two Paths

    题目链接: http://codeforces.com/contest/673/problem/D 题意: 给四个不同点a,b,c,d,求是否能构造出两条哈密顿通路,一条a到b,一条c到d. 题解: ...

  7. matrix_last_acm_4

    2013 ACM-ICPC吉林通化全国邀请赛 A http://acm.hust.edu.cn/vjudge/contest/view.action?cid=97654#problem/A 题意:输入 ...

  8. CHtml::radioButtonList

    public function getSortList(){ $arr = array(); $arr[0]['id']=0; $arr[0]['name']="否"; $arr[ ...

  9. 科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生

    科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生 黑科技,还是要提D.E.Shaw Research这个奇异的存在. 要讲这个黑科技,我们可能要扯远一点,先讲讲D.E. Shaw这个人是怎 ...

  10. Linux 的多线程编程的高效开发经验

    http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...