Mybatis框架学习总结-调用存储过程
设计需求
查询数据库,查询得到男性或女性的数量,如果传入的参数是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框架学习总结-调用存储过程的更多相关文章
- MyBatis入门学习教程-调用存储过程
一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_incr ...
- MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程
虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...
- 03 Mybatis框架---学习笔记1--框架的概念及优势
1.框架的概念 框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统.简单说就是使用别人搭好的舞台,你来做表演.而且,框架一般是成熟的,不断升级的软件.框架是我们软件开发中的一套解决方 ...
- Mybatis框架学习总结-Mybatis框架搭建和使用
Mybatis介绍 Mybatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.Mybatis可以使 ...
- Mybatis框架学习1:入门
一框架介绍 1.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...
- mybatis框架学习:
一.什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能 大大提高开发效率 二.三层框架 表现层: 用 ...
- mybatis框架学习第一天
三层架构: 表现层:用于展示数据 业务层:处理业务需求 持久层:和数据库交互的 3.持久层技术解决方案: JDBC技术: Connecction PreparedStatement ResultSet ...
- Mybatis框架学习总结-表的关联查询
一对一关联 创建表和数据:创建一张教师表和班级表,这里假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIM ...
- Mybatis框架学习总结-解决字段名与实体类属性名不相同的冲突
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定是完全相同的. 1.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY ...
随机推荐
- Scala类中的get与set
在scala类中get和set使用有以下几种: 1. var foo: Scala自动合成一个getter和一个setter 2. val foo: Scala自动合成一个getter scala中v ...
- Android基础总结(四)网络通信
网络图片查看器 确定图片的网址 发送http请求 URL url = new URL(address); //获取连接对象,并没有建立连接 HttpURLConnection conn = (Http ...
- web服务器优化的一些思路
作为一个新手(并不是菜鸟,而是像我们这样的学生),维护一个网站往往是一个很头疼的问题,尤其是动态网站,更尤其是用java写的网站. 当网站的吞吐量很小的时候你会发现服务器根本不需要维护,因为几乎没有延 ...
- windbg的使用
1. set 1.1. 设置Symbol file path file->symbol file path, 如: D:\***\TestProject\pdb 1.2 设置source ...
- pl/sql developer导出数据到excel的方法
http://yedward.net/?id=92 问题说明:使用pl/sql developer导出数据到excel表格中是非常有必要的,一般的可能直接在导出的时候选择csv格式即可,因为该格式可以 ...
- 一个格式化字符串的函数ToString
A Formatting String Function 原文:http://flounder.com/tostring.htm CString ToString(LPCTSTR fmt, ...) ...
- docker实用命名
删除tag/镜像: #删除tag docker rmi index-dev.qiniu.io/cs-kirk/nginx:latest docker rmi index-dev.qiniu.io/cs ...
- log4net写txt日志
1.配置: <configSections>节点下添加: <section name="log4net" type="log4net.Config.Lo ...
- Github+Jekyll —— 创建个人免费博客(五)jekyllproject公布到github上
摘要: 本文中我将介绍一下怎样在github上搭建个人Blog(博客),也顺便让我们掌握一下github Pages功能,另外还涉及到Jekyll技术. ======================= ...
- 编程之美 set 15 高效率地安排见面会
题目 有 n 个学生分别对 m 个见面会感兴趣, 为了满足所有学生的要求, HR 希望每个学生都能参加自己感兴趣的所有见面会 思路 1. 假设某一个同学同时对k个小组感兴趣, 那么这k个小组两两之间都 ...