首先是MySQL中创建存储过程的SQL

-- 列出全部的存储过程
SHOW PROCEDURE STATUS; -- 查看一个已存在的存储过程的创建语句,假设此存储过程不存在,会提示SQL错误(1305):PROCEDURE pro_init does not exist
SHOW CREATE PROCEDURE pro_init; -- 创建存储过程
DROP PROCEDURE IF EXISTS pro_init; -- 删除一个已存在的存储过程
DELIMITER // -- 声明当前MySQL分隔符为//
CREATE PROCEDURE pro_init(username VARCHAR(60), OUT userId INT)
BEGIN
SELECT user_id INTO userId FROM user_info ui WHERE ui.username=username;
IF userId IS NULL OR userId='' THEN
SELECT 0 INTO userId;
ELSE
INSERT INTO t_worldcup_team(userId, teamAA, teamBB, updateTime, createTime)
VALUES(userId, '巴西', '俄罗斯', NULL, now());
INSERT INTO t_worldcup_team(userId, teamAA, teamBB, updateTime, createTime)
VALUES(userId, '法国', '西班牙', NULL, now());
INSERT INTO t_worldcup_team(userId, teamAA, teamBB, updateTime, createTime)
VALUES(userId, '荷兰', '英格兰', NULL, now());
INSERT INTO t_worldcup_team(userId, teamAA, teamBB, updateTime, createTime)
VALUES(userId, '智利', '意大利', NULL, now());
INSERT INTO t_worldcup_team(userId, teamAA, teamBB, updateTime, createTime)
VALUES(userId, '伊朗', '葡萄牙', NULL, now());
INSERT INTO t_worldcup_team(userId, teamAA, teamBB, updateTime, createTime)
VALUES(userId, '希腊', '阿根廷', NULL, now());
END IF;
END
// -- 分隔符,表示此SQL语句结束 -- 调用存储过程
CALL pro_init('hongyu', @userId);
SELECT @userId;

以下是iBatis配置文件的写法

<parameterMap id="pro_init_Map" class="java.util.Map">
<parameter property="username" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="userId" javaType="java.lang.Integer" jdbcType="INT" mode="OUT"/>
</parameterMap>
<procedure id="pro_init" parameterMap="pro_init_Map">
{call pro_init(?, ?)}
</procedure>

最后是Java调用类的写法

public int teamInit(String username) {
int userId = 0;
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("username", username);
paramMap.put("userId", userId);
this.getSqlMapClientTemplate().queryForObject("worldcup_guess.pro_init", paramMap);
return (Integer)paramMap.get("userId");
}

iBatis调用存储过程以及MySQL创建存储过程的更多相关文章

  1. MySql创建存储过程,并使用事件定时调用

    一.使用命令行创建存储过程的步骤 :参数详情参考 https://www.mysqlzh.com/ 1.模板  delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ' ...

  2. [转]MYSQL 创建存储过程

    MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...

  3. mysql 创建存储过程

    mysql 创建存储过程 实例一: CREATE PROCEDURE cp_test() BEGIN declare a int; declare b int; ; ; select a,b; END ...

  4. mysql创建存储过程及调用

    创建存储过程简单示例: DELIMITER //CREATE PROCEDURE ccgc()BEGINSELECT * FROM TEXT;SELECT * FROM s_user;END//DEL ...

  5. mysql 创建存储过程 创建1000w测试数据表

    存储过程:The stored procedure 结构 CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE stored_procedure_n ...

  6. mysql -- 创建存储过程 往数据表中新增字段

    需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作:若该字段不存在,则新增) 百度了n久,没有符合要求的例子,只有参考加自己琢磨,最终终于给弄出来了,以下是几个版本的更迭 第一版: ...

  7. mysql创建存储过程中的问题

    1.在创建存储过程成功后,使用call 存储过程名执行时报错: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_gener ...

  8. mysql创建存储过程,定时任务,定时删除log

    -- 创建存储过程 清除30天前的日志create procedure deleteLog()BEGINdelete from contract_vlog where create_time<D ...

  9. PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用

    Oracle使用存储过程实例: 例1: //查出表字段赋值给存储过程变量 create proc proc_stu @sname varchar(20), //默认是输入参数(input),另外还有两 ...

随机推荐

  1. Maximum Allowed Error 7 错误解决

    http://blog.csdn.net/lyx123/article/details/6238167 这段时间,一直在做WINCE 的应用,后来将NK做大后,必须修改EBOOT,以便能够提供较大的空 ...

  2. VC 设置 Stack Overflow

    C/C++ stack overflow, 怎样设置stack大小?解决方案 (1) vc6.0: project->setting->link->project options-& ...

  3. 使用Unity3d的Physics.Raycast()的用法做子弹射击

    Class Functions 1)static function Raycast (origin : Vector3, direction : Vector3, distance : float = ...

  4. [转] struts.xml配置详解

    转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Struts ...

  5. Session简介

    摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java ...

  6. UVA 12661 Funny Car Racing 有趣的赛车比赛(最短路,变形)

    题意:赛道有n个交叉点,和m条单向路径(有重边),每条路都是周期性关闭的,且通过仍需一段时间.在比赛开始时,所有道路刚好打开,选择进入该道路必须满足“在打开的时间段进入,在关闭之前出来”,即不可在路上 ...

  7. WCF 实例化与会话

    实例管理旨在解决服务实例的激活和服务实例生命周期的控制,会话的目的是在于保持相同客户端(服务代理)多次服务调用的状态. 实例上下文 实例上下文是对服务实例的封装,是WCF管理服务实例生命周期的依托,S ...

  8. 枚举类型的单例模式(java)

    Inspired by Effective Java. Singleton模式是在编程实践中应用最广泛的几种设计模式之一.以前知道的,实现单例的方法有两种(下面的A.B).刚刚在读<Effect ...

  9. bindService和startService的区别

    区别: startService,关闭服务退出activity,service仍然处于后台运行 bindService,关闭服务退出activity直接stopService,停止服务 bindSer ...

  10. 解决session失效之后登陆后重新返回之前的页面

    在全局拦截器设置保存之前的url存入session中 登陆之后的地址再重session中存 request只用作一次请求 如果页面跳转几次的话原来的url就不存在了建议存在session @Overr ...