2019独角兽企业重金招聘Python工程师标准>>>

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://my.oschina.net/chendongj/blog/711066

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

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

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

  2. mybatis注解方式调用存储过程

    1.建立存储过程: CREATE DEFINER=`root`@`%` PROCEDURE `p_dmk_fsyx`(v_month VARCHAR(6),v_type VARCHAR(2),OUT ...

  3. SpringMVC与Mybatis集合实现调用存储过程、事务控制

    在SSM框架中经常会用到调用数据库中的存储过程.以及事务控制,下面以保存某单据为例,介绍一下: 1.Oracle中存储过程代码如下(主要逻辑将单据编码自动加1,并将该单据编码返回): CREATE O ...

  4. mybatis mysql 关于调用存储过程获取查询结果

    背景:  由于使用了存储过程进行坚转横的动态查询,查询出来的列是不固定的,也就无法使用实体对象自动转换:但关于查询结果返回困扰了很久,网上很多都是将查询结果做为游标 out 输出,但本人试了很多方法, ...

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

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

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

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

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

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

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

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

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

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

  10. mybatis 调用存储过程

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

最新文章

  1. Gradle构建脚本概要之构建块
  2. 深入SecureFile—新一代LOB揭秘000
  3. [crypto]-05-转载:PKCS #1 RSA Encryption Version 1.5介绍
  4. STL之Map和MFC之CMap比较学习
  5. 五十六、从高中碾转相除法、更相减损术算法谈起
  6. 在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)
  7. IntelliJ IDEA for Mac 中 Java Web Project 默认的工件(Artifacts)输出目录
  8. 【学神-RHEL7】1-3-Linux基本命令和配置服务器来电后自动开机
  9. java socket数据传输_Java Socket编程(一) Socket传输模式
  10. Judy alpha 第七天
  11. 带你自学Python系列(十二):Python函数的用法(二)
  12. 集群搭建预备操作:在私有云上创建与配置虚拟机
  13. ubuntu下点击安装VMware tools,没有压缩包文件
  14. rocketMq消息重复消费问题
  15. html经过菜单变色移开恢复,h5学习笔记:transition菜单过渡变色
  16. 语义分析的一些方法(一)
  17. 《高斯牛顿优化算法--第一讲》原理推导
  18. 线性调频信号学习笔记
  19. 中药的专利标准化研究
  20. 基于物联网技术的3DGIS智慧园区信息系统研究

热门文章

  1. update mysql.user set password_修改mysql密码
  2. html中如何禁用,如何禁用HTML链接
  3. LOL暗影岛服务器维修,LOL各大区服务器的地点
  4. 方舟生存进化联机显示没有找到服务器,方舟生存进化搭建服务器联机教程_方舟生存进化怎么联机_牛游戏网...
  5. springmvc以html作为视图_SpringMVC如何自定义视图
  6. 自己学java需要多久_自学 java, 学多久可以自己找到工作?
  7. java队列和栈实现原理_Java特性队列和栈的堵塞原理解析
  8. Selenium中的xpath定位
  9. Hadoop学习笔记三
  10. 推荐一个非常好用的进程管理器