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 ...
随机推荐
- Tablespace for table '`pomelo`.`bag`' exists. Please DISCARD the tablespace before IMPORT.
//遇到的问题是,删除数据库之后,重新创建数据库,在创建数据库表的时候,明明没有该表,却提示存在这个表.这是数据库缓存造成的 //解决方法 FLUSH TABLES; /* 安装MySql数据库(略) ...
- flume+kafka
这里演示在单机fulume环境下,kafka作为source ,chanel , sink时三种情况 下面的测试都是基于下面的基本的配置文件进行修改的 a1.sources = r1 a1.sinks ...
- HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条
页面技术:HTML5 + AJAX ( jQuery) 后台技术:Servlet 3.0 服务器:Tomcat 7.0 jQuery版本:1.9.1 Servlet 3.0 代码 package or ...
- 扩展RBAC用户角色权限设计方案<转>
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- 使用info命令查看Redis信息和状态
redis-cli连接服务器后,使用info命令查看Redis信息和状态: ? 1 info 其中memory段显示了redis的内存使用状态. 以下内容复制自:http://redisdoc.com ...
- Laravel5.1 搭建博客 --编译前端文件
上篇文章写了Gulp编译前端文件,这篇记录下在搭建博客中使用Gulp 1 引入bootstrap和js 1.1 首先先在项目本地安装Bower sudo npm install bower 1.2 创 ...
- 一次清除SQL SERVER错误日志的体会!
之前在UAT环境搭建的SQL SERVER 2008 R2数据库一直用得比较正常,但最近发现在Sharepoint中不能进行任何操作了,开始以为是什么配置出了问题(因为一直在研究一些新的应用和集成,需 ...
- 权限模块_使用权限_实现主页面的效果_显示左侧菜单&只显示有权限的菜单项
权限模块__使用权限__实现主页面的效果 HomeAction.java public class HomeAction extends ActionSupport { public String i ...
- Maven手动添加dependency(以Oracle JDBC为例)
由于Oracle授权问题,Maven不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库.首先需要到Oracle官网上下载 ...
- Oracle中与日期时间有关的运算函数
1 ADD_MONTHS 格式:ADD_MONTHS(D,N) 说明:返回日期时间D加N月后对应的日期时间.N为正时则表示D之后:N为负时则表示为D之前:N为小数则会自动先删除小 ...