MyBatis学习总结_06_调用存储过程
一、提出需求
查询得到男性或女性的数量, 如果传入的是0就女性否则是男性
二、准备数据库表和存储过程

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

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

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

四、编写单元测试代码

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

MyBatis学习总结_06_调用存储过程的更多相关文章
- MyBatis学习总结(六)——调用存储过程(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013518.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存 ...
- MyBatis学习总结(六)——调用存储过程
一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_ ...
- MyBatis学习总结(六)——调用存储过程
一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...
- MyBatis学习笔记(六)——调用存储过程
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4270352.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据 ...
- 六:MyBatis学习总结(六)——调用存储过程
一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...
- MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程
虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...
- MySQL学习笔记:调用存储过程或函数报1418错误
问题 MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DE ...
- MyBatis的学习总结:调用存储过程【参考】
一.创建存储过程 存储过程的目的:统计edi_test_task 正在运行的任务和非运行的任务 CREATE DEFINER=`root`@`%` PROCEDURE `edihelper`.`SP_ ...
- 转载-MyBatis学习总结
MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合 孤傲苍狼 2015-02-07 00:09 阅读:89825 评论:54 MyBatis学习总结(七)——Myba ...
随机推荐
- 团队开发——第一篇scrum报告
一.角色介绍 产品负责人(兼项目经理PM):王雪青 scrum master: 陆宇 开发团队:赵建松.张文冬.徐擎天 二.product backlog 1.买家登录后,显示各个小吃摊的信息,主要是 ...
- mongodb修改器
mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...
- CSS3 filter10种特效整理
-webkit-filter是css3的一个属性,Webkit率先支持了这几个功能,感觉效果很不错.一共有10种最基本的特效,下来这个DEMO很好的展示了这些效果: <!DOCTYPE html ...
- 怎么将java项目打包成双击就可以运行的jar包---fatjar
fatjar下载地址:http://pan.baidu.com/s/1cQ01o 下载fatJar插件,解压缩后是一个.../plugins/(net...)把plugins下面的(net..)文件夹 ...
- WPS for ubuntu14
QGtkStyle could not resolve GTK. Make sure you have installed the proper libraries. sudo apt-get ins ...
- 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. 题解: ...
- matrix_last_acm_4
2013 ACM-ICPC吉林通化全国邀请赛 A http://acm.hust.edu.cn/vjudge/contest/view.action?cid=97654#problem/A 题意:输入 ...
- CHtml::radioButtonList
public function getSortList(){ $arr = array(); $arr[0]['id']=0; $arr[0]['name']="否"; $arr[ ...
- 科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生
科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生 黑科技,还是要提D.E.Shaw Research这个奇异的存在. 要讲这个黑科技,我们可能要扯远一点,先讲讲D.E. Shaw这个人是怎 ...
- Linux 的多线程编程的高效开发经验
http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...