一、提出需求

  查询得到男性或女性的数量, 如果传入的是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 }

转载于:https://www.cnblogs.com/liyinfeng/p/8134723.html

MyBatis学习总结(六)——调用存储过程相关推荐

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

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

  2. 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)

    1.原始Dao开发方式 原始Dao开发方法需要程序员编写Dao接口和Dao实现类. 1.映射文件:(user.xml) <?xml version="1.0" encodin ...

  3. 【Mybatis学习总结七】调用存储过程

    今天这节课本来可以一小时结束的,我却从三点半搞到了九点.我觉得我是世界上最S13的人!!!没有之一!!!!一个小错害我花了一个晚上的时间去寻找,真是够无语的.好了,言归正传,还是先总结下今天学习的内容 ...

  4. MyBatis入门学习教程-调用存储过程

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

  5. MyBatis调用存储过程,MyBatis调用函数的使用方法

    MyBatis调用存储过程,MyBatis调用函数的使用方法 一.MyBatis 调用存储过程 1.不带参数的 <select id="batchAnalyzeAll" st ...

  6. MyBatis中调用存储过程和函数

    一.调用存储过程 1.首先在数据库中定义存储过程,定义的存储过程的代码如下: //定义存储过程create or replace procedure pag_add(p1 varchar2,p2 va ...

  7. mybatis调用mysql存储过程_秒会mybatis调用存储过程(MySQL)

    一.简介 有的时候,我们不方便自己写SQL,而是只能调用别人提供的存储过程,那如何使用mybatis调用存储过程呢? 二.示例步骤(MySQL) 2.1 准备一张表 DROP TABLE IF EXI ...

  8. mybatis 调用存储过程

    1.定义存储过程 2.调用存储过程 <!-- public void getPageByProcedure(); 1.使用select标签定义调用存储过程2.statementType=&quo ...

  9. Mybatis调用存储过程和函数

    1.现在PL/SQL Developer中定义存储过程和函数 存储过程 create or replace procedure prg_add(p1 in number,p2 in number,p3 ...

最新文章

  1. 通过WebViewJavascriptBridge实现OC与JS交互
  2. 嵌套 思维导图_工作小Tips:如何用思维导图来整理你的汇报
  3. 人工智能中对机器学非常简要的介绍
  4. leetcode-125-Valid Palindrome
  5. puppeteer 鼠标定位滑块_监听滑块滑动或滑块随鼠标移动 | JShare
  6. 开源代码分析研究 之 BugNet (2008年1月14日更新 第一章BugNet 简介 已完成)
  7. 【Java】JDK8新特性之方法引用
  8. OpenCV 基本模块
  9. Linux内核中增加一个新的驱动模块
  10. php 检查txt中全角大写字母的个数
  11. Linux基础命令介绍七:网络传输与安全 wget curl rsync iptables
  12. Printf函数中%p代表什么数据类型
  13. 20个高权重的博客列表
  14. 89c52汇编语言实现跑马灯,汇编语言实现24个跑马灯制作
  15. ae字体预设下载_AE超强文字预设包(附插件和教程)Videohive 2D Text Preset Pack for Animation Composer Plug-in...
  16. 计算机网络拓扑有,计算机网络拓扑
  17. matlab(simulink)里怎么求一个波形的动态平均值
  18. 微信小程序医院门诊体检预约信息管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
  19. BBP算法计算圆周率(BBP Formula HDU - 6217)
  20. apt-get install E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing

热门文章

  1. mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型
  2. Oracle和Mysql的不同
  3. android loader使用教程,Android Loader 机制,让你的数据加载更加轻松
  4. 【Arthas】Arthas 类查找和反编译原理
  5. 【Flink】Flink PipelineExecutor 体系
  6. 【ElasticSearch】 ElasticSearch 读取 流程
  7. 【Flink】Flink 使用 CopyOnWriteArrayList 进行数据缓存的时候 一个bug
  8. 【ElasticSearch】Es 源码之 NetworkModule 源码解读
  9. 【es】Elasticsearch:inverted index,doc_values及source
  10. Maven私服的配置和使用