设计需求

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

准备数据库表和存储过程

1.准备person表:

CREATE TABLE person(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
sex CHAR(2)
); INSERT INTO person(NAME,sex) VALUES('A',"m");
INSERT INTO person(NAME,sex) VALUES('B',"f");
INSERT INTO person(NAME,sex) VALUES('C',"m");

查看person表的内容:

创建存储过程:

创建存储过程,查询得到男性或女性的数量,如果传入的是0就是女性,否则就是男性

DELIMITER $
CREATE PROCEDURE mybatis.ges_person_count(IN sex_id INT ,OUT person_count INT)
BEGIN
IF sex_id=0 THEN
SELECT COUNT(*) FROM mybatis.`person` WHERE person.`sex`='f' INTO person_count;
ELSE
SELECT COUNT(*) FROM mybatis.`person` WHERE person.`sex`='m' INTO person_count;
END IF;
END
$

调用存储过程

DELIMITER ;
SET @person_count=0;
CALL mybatis.`ges_person_count`(1,@person_count);
SELECT @person_count;

2.编辑userMapper.xml,你也可以在别的xml中配置,这个随意

<!-- 调用存储过程得到男性或女性的数量,如果传入的是0,就女性,否则是男性 -->
<select id="getPersonCount" parameterMap="getPersonCountMap" statementType="CALLABLE">
CALL mybatis.`ges_person_count`(?,?);
</select> <!-- parameterMap.put("sexid",0)
parameterMap.put("usercount,-1);
-->
<parameterMap type="java.util.Map" id="getPersonCountMap">
<parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
<parameter property="personcount" mode="OUT" jdbcType="INTEGER"/>
</parameterMap>

3.编写单元测试代码:

Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
String statement = "com.fpc.Mapping.userMapper.getPersonCount";
SqlSession session = sessionFactory.openSession();
Map<String,Integer> parameterMap = new HashMap<>();
parameterMap.put("sexid", 0);
parameterMap.put("personcount", -1);
session.selectOne(statement,parameterMap);
int count = parameterMap.get("personcount");
String profile = "";
if ( parameterMap.get("sexid") == 0 ) {
profile += "女生的数量为:";
} else {
profile += "男生的树数量为:";
}
System.out.println( profile + count);

执行结果:

Mybatis框架学习总结-调用存储过程的更多相关文章

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

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

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

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

  3. 03 Mybatis框架---学习笔记1--框架的概念及优势

    1.框架的概念 框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统.简单说就是使用别人搭好的舞台,你来做表演.而且,框架一般是成熟的,不断升级的软件.框架是我们软件开发中的一套解决方 ...

  4. Mybatis框架学习总结-Mybatis框架搭建和使用

    Mybatis介绍 Mybatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.Mybatis可以使 ...

  5. Mybatis框架学习1:入门

    一框架介绍 1.Mybatis介绍 ​ MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...

  6. mybatis框架学习:

    一.什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能 大大提高开发效率 二.三层框架 表现层: 用 ...

  7. mybatis框架学习第一天

    三层架构: 表现层:用于展示数据 业务层:处理业务需求 持久层:和数据库交互的 3.持久层技术解决方案: JDBC技术: Connecction PreparedStatement ResultSet ...

  8. Mybatis框架学习总结-表的关联查询

    一对一关联 创建表和数据:创建一张教师表和班级表,这里假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIM ...

  9. Mybatis框架学习总结-解决字段名与实体类属性名不相同的冲突

    在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定是完全相同的. 1.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY ...

随机推荐

  1. 编译hadoop,spark遇到的问题总结

    编译hadoop2.6.4 1.JDK8版本过高,换成JDK7: 2.换成命令行mvn package -Pdist,native -DskipTests-Dtar-Dmaven.javadoc.sk ...

  2. tomcat上

    1. Tomcat简介 Tomcat是一个web服务器 web服务器:httpd,nginx web 处理静态文件:html css.js.jpg,png Tomcat 处理 html文件 php软件 ...

  3. 第二百七十九节,MySQL数据库-pymysql模块操作数据库

    MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数使用方式: 模块名称.connec ...

  4. 第二百六十一节,Tornado框架模板引擎本质

    Tornado框架模板引擎本质 只需要了解一下即可 本篇就来详细的剖析模板处理的整个过程. 上图是返回给用户一个html文件的整个流程,较之前的Demo多了绿色流线的步骤,其实就是把[self.wri ...

  5. 故如果要比较两个字符串是否相同可以对a调用equal

    故如果要比较两个字符串是否相同(而不是他们的地址是否相同).可以对a调用equal: System.out.println(a.equal(b)); equal用来比较两个对象中字符串的顺序. a.e ...

  6. iOS音频播放 (三):AudioFileStream 转

    原文出处 :http://msching.github.io/blog/2014/07/09/audio-in-ios-3/ 前言 本来说好是要在第三篇中讲AudioFileStream和AudioQ ...

  7. Android的Parcelable中describeContents方法的作用

    这个方法返回的值通常为0,那什么情况下需要填写其他值呢? 这个方法到目前为止返回其他唯一有效的值就是CONTENTS_FILE_DESCRIPTOR(0x01),指明这个Parcel的内容包含文件描述 ...

  8. uva624 CD (01背包+路径的输出)

    CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 624 ...

  9. 基于WebSocket实现网页版聊天室

    WebSocket ,HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,其使用简单,应用场景也广泛,不同开发语言都用种类繁多的实现,仅Java体系中,Tomcat,Jetty,Sp ...

  10. php队列算法[转]

    <?php/*** php队列算法* * Create On 2010-6-4* Author Been* QQ:281443751* Email:binbin1129@126.com**/cl ...