MyBatis学习总结(六)——调用存储过程
一、提出需求
查询得到男性或女性的数量, 如果传入的是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学习总结(六)——调用存储过程相关推荐
- MyBatis的学习总结:调用存储过程【参考】
一.创建存储过程 存储过程的目的:统计edi_test_task 正在运行的任务和非运行的任务 CREATE DEFINER=`root`@`%` PROCEDURE `edihelper`.`SP_ ...
- 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
1.原始Dao开发方式 原始Dao开发方法需要程序员编写Dao接口和Dao实现类. 1.映射文件:(user.xml) <?xml version="1.0" encodin ...
- 【Mybatis学习总结七】调用存储过程
今天这节课本来可以一小时结束的,我却从三点半搞到了九点.我觉得我是世界上最S13的人!!!没有之一!!!!一个小错害我花了一个晚上的时间去寻找,真是够无语的.好了,言归正传,还是先总结下今天学习的内容 ...
- MyBatis入门学习教程-调用存储过程
一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_ ...
- MyBatis调用存储过程,MyBatis调用函数的使用方法
MyBatis调用存储过程,MyBatis调用函数的使用方法 一.MyBatis 调用存储过程 1.不带参数的 <select id="batchAnalyzeAll" st ...
- MyBatis中调用存储过程和函数
一.调用存储过程 1.首先在数据库中定义存储过程,定义的存储过程的代码如下: //定义存储过程create or replace procedure pag_add(p1 varchar2,p2 va ...
- mybatis调用mysql存储过程_秒会mybatis调用存储过程(MySQL)
一.简介 有的时候,我们不方便自己写SQL,而是只能调用别人提供的存储过程,那如何使用mybatis调用存储过程呢? 二.示例步骤(MySQL) 2.1 准备一张表 DROP TABLE IF EXI ...
- mybatis 调用存储过程
1.定义存储过程 2.调用存储过程 <!-- public void getPageByProcedure(); 1.使用select标签定义调用存储过程2.statementType=&quo ...
- Mybatis调用存储过程和函数
1.现在PL/SQL Developer中定义存储过程和函数 存储过程 create or replace procedure prg_add(p1 in number,p2 in number,p3 ...
最新文章
- 通过WebViewJavascriptBridge实现OC与JS交互
- 嵌套 思维导图_工作小Tips:如何用思维导图来整理你的汇报
- 人工智能中对机器学非常简要的介绍
- leetcode-125-Valid Palindrome
- puppeteer 鼠标定位滑块_监听滑块滑动或滑块随鼠标移动 | JShare
- 开源代码分析研究 之 BugNet (2008年1月14日更新 第一章BugNet 简介 已完成)
- 【Java】JDK8新特性之方法引用
- OpenCV 基本模块
- Linux内核中增加一个新的驱动模块
- php 检查txt中全角大写字母的个数
- Linux基础命令介绍七:网络传输与安全 wget curl rsync iptables
- Printf函数中%p代表什么数据类型
- 20个高权重的博客列表
- 89c52汇编语言实现跑马灯,汇编语言实现24个跑马灯制作
- ae字体预设下载_AE超强文字预设包(附插件和教程)Videohive 2D Text Preset Pack for Animation Composer Plug-in...
- 计算机网络拓扑有,计算机网络拓扑
- matlab(simulink)里怎么求一个波形的动态平均值
- 微信小程序医院门诊体检预约信息管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
- BBP算法计算圆周率(BBP Formula HDU - 6217)
- apt-get install E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing
热门文章
- mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型
- Oracle和Mysql的不同
- android loader使用教程,Android Loader 机制,让你的数据加载更加轻松
- 【Arthas】Arthas 类查找和反编译原理
- 【Flink】Flink PipelineExecutor 体系
- 【ElasticSearch】 ElasticSearch 读取 流程
- 【Flink】Flink 使用 CopyOnWriteArrayList 进行数据缓存的时候 一个bug
- 【ElasticSearch】Es 源码之 NetworkModule 源码解读
- 【es】Elasticsearch:inverted index,doc_values及source
- Maven私服的配置和使用