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 ...
随机推荐
- Setup Factory 读取安装包的配置文件
result = INIFile.GetValue(SessionVar.Expand("%SourceFolder%\\set.ini"), "set", & ...
- PHP多进程编程(一)
虽然PHP 中,多进程用的比较的少.但是毕竟可能是会用到了.我最近就遇到这样一个问题,用户提交几百个url以后,要读出这个url 中的标题. 当然,你不希望用户等待的太久,10s 钟应该给出个答案.但 ...
- Scala中Stream的应用场景及其实现原理
欢迎关注我的新博客地址:http://cuipengfei.me/blog/2014/10/23/scala-stream-application-scenario-and-how-its-imple ...
- 解决mac休眠睡眠异常耗电方法
备忘
- 关于Unity中调试C#的方法
1.断点输出语句 在感觉有问题的地方的上下文写一些输出语句,如果控制台只有输出上文,没有输出下文,那么可以知道,上下文之间的语句有问题,因为下文没执行到,没有输出语句. Debug.Log(" ...
- 第二百五十三节,Bootstrap项目实战-资讯
Bootstrap项目实战-资讯 html <!DOCTYPE html> <html lang="zh-cn"> <head> <met ...
- Spring Cloud都做了哪些事
Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都可以用 ...
- HashSet非常的消耗空间,TreeSet因为有排序功能,因此资源消耗非常的高,我们应该尽量少使用
注:HashMap底层也是用数组,HashSet底层实际上也是HashMap,HashSet类中有HashMap属性(我们如何在API中查属性).HashSet实际上为(key.null)类型的Has ...
- 多媒体开发之rtsp---rtsp client 端的实现
http://blog.csdn.net/xyz_lmn/article/details/6055179 java实现 http://www.cnblogs.com/wohexiaocai/p/454 ...
- 【BZOJ】1613: [Usaco2007 Jan]Running贝茜的晨练计划(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1613 水题dp 设d[i][j]为i分钟疲劳为j d[i][j]=d[i-1][j-1]+a[i] ...