Mybatis使用存储过程(MySql)
推荐文章:http://www.iteye.com/topic/1132302
http://yhjhappy234.blog.163.com/blog/static/316328322012455714892/
http://www.iteye.com/problems/85525
http://www.blogjava.net/zljpp/archive/2012/04/15/374383.html
这里写的是后台数据库使用Mysql,
存储过程定义:
PROCEDURE deyestest.procedure1(OUT json VARCHAR(2000))
BEGIN DECLARE v_id INT;
DECLARE v_userName VARCHAR(155);
DECLARE v_mobileNum VARCHAR(55);
DECLARE v_tmp VARCHAR(1000);
DECLARE v_info VARCHAR(2000);
DECLARE v_info2 VARCHAR(2000);
DECLARE v_int INT; DECLARE done INT DEFAULT 0; DECLARE myCursor CURSOR FOR
SELECT userId
, userName
, mobileNum
FROM
user_info
ORDER BY
userId
LIMIT
2, 10;
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET done = 1; OPEN myCursor;
SET v_info = concat('[');
FETCH myCursor INTO v_id, v_userName, v_mobileNum;
REPEAT SET v_tmp = concat('{', v_id, ',', v_userName, ',', v_mobileNum, '}', ',');
SET v_info = concat(v_info, v_tmp);
FETCH myCursor INTO v_id, v_userName, v_mobileNum;
UNTIL done
END REPEAT;
SET NAMES 'utf8';
SET v_int = char_length(v_info); SET v_info = left(v_info COLLATE utf8_bin, v_int - 1); SET v_info2 = concat(v_info, ']');
CLOSE myCursor;
SELECT v_info2
INTO
json;
END
java中Mapper配置:
<select id="getByProcedure2" statementType="CALLABLE">
{
call procedure1(
#{json,jdbcType=VARCHAR,javaType=java.lang.String,mode=OUT}
)
}
</select>
javaMapper代码:
public interface PersonMapper {
public void getByProcedure2(Map<String,Object> map);
}
java调用测试
public static void main(){
HashMap<String, Object> hashMap = new HashMap<String, Object>();
wuShuaiMapper.getByProcedure2(hashMap);
System.out.println(hashMap.get("json"));
}
如果使用Map作为进行java与数据库存储过程的数据输入与输出的参数,只需要配置select标签中“statementType="CALLABLE"”,然后在存储过程中的输出参数使用如下方式:SELECT v_info2 INTO json,其中json是存储过程中的输出参数。
Mybatis使用存储过程(MySql)的更多相关文章
- 使用mybatis调用存储过程(注解形式和配置文件形式)
最近在看资料中涉及到mybatis,突然想到mysql中的视图.存储过程.函数.现将在使用mybatis调用mysql的存储过程使用总结下: 使用的环境:mybatis3.4.6,mysql 5.6, ...
- Mybatis调用存储过程报错
Mybatis调用存储过程 贴码 123456 Error querying database. Cause: java.sql.SQLException: User does not have ac ...
- Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二
接着上一篇博客<Spring整合MyBatis(Maven+MySQL)一>继续. Spring的开放性和扩张性在J2EE应用领域得到了充分的证明,与其他优秀框架无缝的集成是Spring最 ...
- MyBatis基础:MyBatis调用存储过程(6)
1. 存储过程准备 CREATE PROCEDURE sp_task ( IN userId INT ) BEGIN SELECT * FROM task WHERE user_id = userId ...
- springboot+mybatis+druid+sqlite/mysql/oracle
搭建springboot+mybatis+druid+sqlite/mysql/oracle附带测试 1.版本 springboot2.1.6 jdk1.8 2.最简springboot环境 http ...
- mybatis&plus系列------Mysql的JSON字段的读取和转换
mybatis&plus系列------Mysql的JSON字段的读取和转换 一. 背景 在平常的开发中,我们可能会有这样的需求: 业务数据在存储的时候,并不是以mysql中的varchar丶 ...
- mybatis/callablestatement调用存储过程mysql connector产生不必要的元数据查询
INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...
- mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负载减少20%)
INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...
- mybatis mapper调用mysql存储过程
mybatis版本:3.4.4 存储过程 1.mapper.xml文件中配置相关的sql语句. <select id="callTest" statementType=&qu ...
随机推荐
- Linux 下编译Android-VLC开源播放器详解(附源码下载)
这两天需要做音视频播放相关的东西,所以重新找了目前android下的解码库.Android自带的解码库支持不全,因此很多第三方播放器都是自带解码器,绝大部分都是使用FFMpeg作为解码库.我11年的时 ...
- javascript高级知识点——继承
代码信息来自于http://ejohn.org/apps/learn/. 继承是如何工作的 function Person(){} function Ninja(){} Ninja.prototype ...
- description方法介绍及重写
- 前端制作中,IE6还有必要兼容吗?
国内市场对IE 6~7支持还有一定需求,但对于一个前端开发者,我们应该去推动这个行业向前发展,而不是一味迁就.妥协. 曾经,能够提供支持老版本 IE 是一个前端开发者的必备技能.随着移动互联网大潮来临 ...
- JAVA设计原则
1.单一职责规则(SRP):有且仅有一个原因引起类的变化. 2.依赖倒置规则(DIP): 高层模块不应该依赖底层模块,两者都用依赖接口: 接口不依赖细节: 细节依赖接口. 3.接口隔离规则:类间的 ...
- mysql 按日期查询
在mysql中,比如你的表的时间字段是column2,并且column2的类型是timestamp 单日查询: select * from TableName where column1='xxxx' ...
- VMWARE使用问题
因为一些原因创建的两个虚拟机出问题了,然而里面还放了好多东西呢不想就这样删掉,就抱着试一试的心态看能不能恢复(结果真能恢复). 这里使用的方法是VMware虚拟机配置文件(.vmx)损坏修复 在这过程 ...
- spring 源码之IOC 类图
Spring IoC容器是spring框架的核心和基础,IoC容器负责spring Bean的生命周期,是spring框架实现其他扩展功能的基础.容器的继承结构比较复杂,这里画出了spring IoC ...
- 001.web前端-学习了解
学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1.html(Hypertext Markup Language)—— ...
- virtualBox使用nat模式下ssh连接
virtualBox本地虚拟机通过ssh连接一般可通过桥接模式和Nat模式 桥接模式下,共享本地主机网卡,在同一个局域网之下,直接获取Ip地址就可以进行连接了. Nat模式下,获取的Ip与本地主机不是 ...