MyBatis学习教程(六)-调用存储过程_java

一、提出需求

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

二、准备数据库表和存储过程

create table p_user(
id int primary key auto_increment,
name varchar(),
sex char()
);
insert into p_user(name,sex) values('A',"男");
insert into p_user(name,sex) values('B',"女");
insert into p_user(name,sex) values('C',"男");
-- 创建存储过程(查询得到男性或女性的数量, 如果传入的是就女性否则是男性)
DELIMITER $
CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
BEGIN
IF sex_id= THEN
SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO user_count;
ELSE
SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='男' INTO user_count;
END IF;
END
$
-- 调用存储过程
DELIMITER ;
SET @user_count = ;
CALL mybatis.ges_user_count(, @user_count);
SELECT @user_count; 

三、编辑userMapper.xml

  编辑userMapper.xml文件,添加如下的配置项

<!--
查询得到男性或女性的数量, 如果传入的是就女性否则是男性
-->
<select id="getUserCount" parameterMap="getUserCountMap" statementType="CALLABLE">
CALL mybatis.ges_user_count(?,?)
</select>
<!--
parameterMap.put("sexid", );
parameterMap.put("usercount", -);
-->
<parameterMap type="java.util.Map" id="getUserCountMap">
<parameter property="sexid" mode="IN" jdbcType="INTEGER"/>
<parameter property="usercount" mode="OUT" jdbcType="INTEGER"/>
</parameterMap> 

四、编写单元测试代码

package me.gacl.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import me.gacl.custom.model.ConditionUser;
import me.gacl.domain.User;
import me.gacl.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
/**
* @author gacl
* 测试调用存储过程
*/
public class Test {
@Test
public void testGetUserCount(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUserCount是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "me.gacl.mapping.userMapper.getUserCount";//映射sql的标识字符串
Map<String, Integer> parameterMap = new HashMap<String, Integer>();
parameterMap.put("sexid", );
parameterMap.put("usercount", -);
sqlSession.selectOne(statement, parameterMap);
Integer result = parameterMap.get("usercount");
System.out.println(result);
sqlSession.close();
}
}

以上所述是小编给大家介绍的MyBatis学习教程(六)-调用存储过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mybatis存储过程
,以便于您获取更多的相关知识。

时间: 2024-09-03 14:14:13

MyBatis学习教程(六)-调用存储过程_java的相关文章

MyBatis学习教程(二)—如何使用MyBatis对users表执行CRUD操作_java

上一篇文章MyBatis入门学习教程(一)-MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.在没奔主题之前,先给大家补充点有关mybatis和crud的基本知识. 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBa

MyBatis学习教程(五)-实现关联表查询方法详解_java

一.一对一关联  1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR() ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VAR

MyBatis学习教程(七)-Mybatis缓存介绍_java

一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1.一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空. 2. 二级缓存: 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自

MyBatis学习教程(四)-如何快速解决字段名与实体类属性名不相同的冲突问题_java

在项目开发中,我们经常会遇到表中的字段名和表对应实体类的属性名称不一定都是完全相同的情况,下面小编给大家演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突问题,感兴趣的朋友一起学习吧. 一.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSERT INTO orders(order_no, or

MyBatis学习教程(三)-MyBatis配置优化_java

一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="." encoding="UTF-"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--

MyBatis学习笔记(二)之关联关系_java

今天主要学习的关联关系是一对一关系与一对多关系. 一.一对一关系 还是通过例子来解释说明.(一个妻子对应一个丈夫). 1)数据库信息 create table t_wife( id int primary key auto_increment, wife_name varchar(), fk_husband_id int ); create table t_husband( id int primary key auto_increment, husband_name varchar() );

MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解_java

一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: 复制代码 代码如下: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 如下图所示: 创建好的项目如下: 编辑pom.xml文件 <project xmlns="http://maven.apac

MyBatis学习 之 六、insert操作返回主键

     数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅.   二. insert元素 属性详解   其属性如下:    parameterType ,入参的全限定类名或类型别名    keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置    keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将

java-mybatis调用存储过程有几种方式

问题描述 mybatis调用存储过程有几种方式 mybatis调用存储过程除了call的方式还有其他的吗,用call调用有很多缺陷,只能按参数顺序传值,如果存储过程增加一个值对应的代码还得改,有的值用默认值就可以,但是没法传默认值,求解 解决方案 http://sishuok.com/forum/blogPost/list/3898.html 解决方案二: http://blog.csdn.net/zhaoweitco/article/details/10831091 解决方案三: 可以直接在x