java代码:

    @RequestMapping(value = "/testProcedure", method = RequestMethod.GET)
public @ResponseBody String testProcedure(HttpServletRequest request, HttpServletResponse response) throws IOException {
Map<String, Object> paraMap = new HashMap<String, Object>();
//输出参数可以不传
//paraMap.put("out_ret", -1);
//paraMap.put("out_desc", "");
//paraMap.put("userId", null);
paraMap.put("user_pwd", "123456");
paraMap.put("nickname", UUID.randomUUID().toString().replace("-", "").substring(0, 10));
procedureMapper.testProcedure(paraMap);
System.out.println(paraMap);
return null;
}

dao方法:

Map<String, Object> testProcedure(Map<String, Object> paraMap);

ProcedureMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.zsmy.mapper.ProcedureMapper" > <select id="testProcedure" parameterType="java.util.Map" statementType="CALLABLE" resultType="java.util.HashMap">
{call loginandreg(
#{out_ret,mode=OUT,javaType=java.lang.Integer,jdbcType=INTEGER},
#{out_desc,mode=OUT,javaType=java.lang.String,jdbcType=VARCHAR},
#{userId,jdbcType=VARCHAR,mode=OUT},
#{user_pwd,jdbcType=VARCHAR,mode=IN},
#{nickname,jdbcType=VARCHAR,mode=IN}
)
}
</select> </mapper>

存储过程:

DELIMITER //
DROP PROCEDURE IF EXISTS loginandreg // CREATE PROCEDURE loginandreg(
OUT out_ret INT,
OUT out_desc VARCHAR(100),
OUT userId VARCHAR(32),
IN user_pwd VARCHAR(32),
IN nickname VARCHAR(16)
)
BEGIN
DECLARE u_id VARCHAR(32);
SET u_id=(SELECT uuid_short());
SET out_ret = -1;
SET out_desc = '执行失败';
IF EXISTS(SELECT * FROM tb_user u WHERE u.NICKNAME=nickname) THEN
SELECT u.ID INTO userId FROM tb_user u WHERE u.NICKNAME=nickname AND u.PAY_PASSWORD=user_pwd;
IF FOUND_ROWS() < 1 THEN
SELECT '-1' INTO userId;
END IF;
ELSE INSERT INTO tb_user(ID, NICKNAME, PAY_PASSWORD) VALUES (u_id, nickname,user_pwd);
SELECT u_id INTO userId;
END IF;
SET out_ret = 1;
SET out_desc ='SUCC';
END //
DELIMITER ;

mybatis-mysql操作存储过程的更多相关文章

  1. mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select (1) 或者 select (*))

    step1:在mysql cmd中新建存储过程: drop procedure if exists queryCountByGrade ; delimiter // -- 定义存储过程结束符号为// ...

  2. C# 中的数据库操作~存储过程篇Mysql SqlServer

    Mysql 存储过程查询方式 SQL server 普通数据库操作 EF 调用SQL SERVER存储过程 Mysql 存储过程查询方式: public NetPort GetNetdevicePor ...

  3. MySQL学习——操作存储过程

    MySQL学习——操作存储过程 摘要:本文主要学习了使用DDL语句操作存储过程的方法. 了解存储过程 是什么 存储过程是一组为了完成特定功能的SQL语句集合. 使用存储过程的目的是将常用或复杂的工作预 ...

  4. SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现

    上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1.    外部架包依赖引入 外部依赖包引入 ...

  5. 解决springmvc+mybatis+mysql中文乱码问题【转】

    这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...

  6. Mysql操作初级

    Mysql操作初级 本节内容 数据库概述 数据库安装 数据库操作 数据表操作 表内容操作 1.数据库概述 数据库管理系统叫做DBMS 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建 ...

  7. MySQL中存储过程+事件的使用方法

    一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...

  8. MYSQL分页存储过程及事务处理

    最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...

  9. mysql之存储过程

    一.存储过程     迄今为止,使用的大多数 SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形.         1. ...

  10. MyBatis知多少(22)MyBatis删除操作

    本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, f ...

随机推荐

  1. PHP日常开发工具-Sublime应用

    工欲善其事,必先利其器.这里我推荐Sublime Text3做为PHP编辑器,以下简称为ST3,因为不仅系统资源占用小.打开快速,并且还有如下优点: 插件多,类似Emmet信手拈来,非常顺手. UI很 ...

  2. oracle性能优化之表设计

    数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争.为了便于读者阅读和理解,笔者参阅了Sybase.Informix和Oracle等大型数据库系统参考资料,基于多年的工程实践经验 ...

  3. FTP连接时出现“227 Entering Passive Mode” 的解决方法

    今天从公网的服务器连接本地内网的FTP server copy文件时,系统老是提示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x),很是奇怪,于是上网找资料 ...

  4. Logstash学习-配置语法

    区段(section) Logstash 用{}来定义区域.区域内可以包括插件区域定义,你可以在一个区域定义多个插件,插件区域内则可以定义键值对设置. 数据类型 Logstash支持少量的数据值类型: ...

  5. SVN批处理

    前言 我们在项目开发中,使用的版本管理工具有svn git等.这里介绍一下用 bat命令操作svn .这样会给我们带来很大的方便. bat命令 Python等大家一定要掌握哈,会给你带来很多的方便.其 ...

  6. CURL命令详解

    curl命令是一个强大的网络工具,它能通过http,ftp等方式下载.上传文件.其中curl远不止这些功能,大家可以通过阅读手册获取更多的信息,类似的工具还有wget. curl命令使用了libcur ...

  7. centos中基于随机数,再加入班级学生姓名

    这只需要在上一篇的随机数中加入数值就可以了 代码如下 #!/bin/bash num=$(date +%N); c=(wanghao xieyunsheng) a=`expr $num % 39 ` ...

  8. centos6.6_64位操作系统安装时候出现kernel panic - not syncing: Attempted to kill init 解决办法

    最近在VM上安装centos时候经常被这个问题虐,后来进入单用户模式在   kernel /vmlinuz-XXXXro root=/dev/vogroup00/logvol00 rhgb quie  ...

  9. 浏览器请求URL原理

    访问服务器url其实是访问DNS服务器,浏览器询问DNS服务器锁访问的url的IP是什么, 找到之后就会返回结果,找不到就继续去其他DNS中寻找,找到路径之后就会返回一个html文档,浏览器会解析这个 ...

  10. 源码剖析——深入Windows句柄本质

    参考资料: 1. http://www.codeforge.cn/read/146318/WinDef.h__html windef.h头文件 2. http://www.codeforge.cn/r ...