mybatis如何在后台调用存储过程

-- mybatis调用存储过程
-- 数据库:mysql5.5
一、提出需求
  查询得到男性或女性的数量, 如果传入的是2就女性,否则是男性
二、准备数据库表和存储过程
create table p_user(
id int primary key auto_increment,
name varchar(10),
sex char(2)
);

insert into p_user(name,sex,code) values(‘A‘,"男",1);
insert into p_user(name,sex,code) values(‘B‘,"女",2);
insert into p_user(name,sex,code) values(‘C‘,"男",1);

-- 创建存储过程(查询得到男性或女性的数量, 如果传入的是2就女性否则是男性)
DELIMITER $
CREATE PROCEDURE mybatis.ges_user_count(IN sex_id INT, OUT user_count INT)
BEGIN
IF sex_id=2 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
$
-- mysql客户端调用存储过程
DELIMITER ;
SET @user_count = 0;
CALL mybatis.ges_user_count(1, @user_count);
SELECT @user_count;

-- 另外一种写法,可以直接把入参传给sql的字段
DELIMITER $
CREATE PROCEDURE get_user_count(IN sex_code INT, OUT user_count INT)
BEGIN
SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.code = sex_code INTO user_count;
END
$

-- mysql客户端调用存储过程
SET @user_count = 0;
CALL get_user_count(20, @user_count);
SELECT @user_count;

***此处需要注意的是,入参或者出参的名字一定不能和表中的字段名字相同.

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

CALL mybatis.ges_user_count(?,?)

四、编写单元测试代码
/**
* @author gacl
* 测试调用存储过程
*/
public class Test6 {
@Test
public void testGetUserCount(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
String statement = "me.gacl.mapping.userMapper.getUserCount";//映射sql的标识字符串
Map parameterMap = new HashMap();
parameterMap.put("sexid", 1);
parameterMap.put("usercount", -1); //给个初始值,0也可以
sqlSession.selectOne(statement, parameterMap);
Integer result = parameterMap.get("usercount"); //执行后,结果会通过出参返回
System.out.println(result);
sqlSession.close();
}
}

原文地址:http://blog.51cto.com/9381188/2352543

时间: 2024-10-28 20:00:48

mybatis如何在后台调用存储过程的相关文章

MyBatis学习总结(六)——调用存储过程(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(六)--调用存储过程 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男");

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

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

MyBatis学习总结_06_调用存储过程

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

MyBatis学习总结(六)——调用存储过程

一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_increment, 3 name varchar(10), 4 sex char(2) 5 ); 6 7 insert into p_user(name,sex) values('A',"男"); 8 insert into p_user(name,sex) values('B',&qu

C# 后台调用存储过程

例一丶返回集合 [WebMethod] public object RegisterMethod(string type, string username, string password, string devicecode) { string connectString = System.Configuration.ConfigurationSettings.AppSettings["connStr"]; SqlConnection conn = new SqlConnection

C#之调用存储过程(第三章)

C#调用存储过程 本人大学毕业到现在为止有一年多了,工作上碰到了许多问题,多亏博客园的各位兄弟姐妹无私分享,在此感谢各位! 以下内容可能有错漏之处,请大家多多指教. C#后台代码如下: //调用存储过程的方法public static void Startupworkflow(string firstnodename, string secondnodename, string firstact) { SqlConnection conn = new SqlConnection( Configu

mybatis调用存储过程

最近在研究mybatis调用存储过程,发表一下自己的学习心得 其中最好用的就是通过map传值,结果还用这个map接收,因为map是一个非常强大的东西,有时候存储过程要操作多张表. 比如说:往多张表插入数据,用JavaBean的方式就很难做到,参数对应多个实体类不好解决,用map就能完美的解决这个问题. Map<String, Object> map=new HashMap<String, Object>把需要的参数往里面一放,就能很容易解决问题 dao层(dao接口),在dao接口

mybatis 调用存储过程 返回游标 实例

存储过程示例: create or replace procedure Fsp_Plan_CheckPrj(v_grantno varchar2, v_deptcode number, v_cursor out sys_refcursor) is ……………… ---返回统计结果 open v_Cursor for select s.plan_code, s.plan_dept, s.plan_amount, s.exec_amount, p.cname as plan_name, d.cnam

MyBatis——调用存储过程

原文:http://www.cnblogs.com/xdp-gacl/p/4270352.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_increment, name varchar(10), sex char(2) ); insert into p_user(name,sex) values('A',"男"); insert in