文档章节

mysql 存储过程,以及mybatis如何调用

风间影月
 风间影月
发布于 2017/04/20 11:16
字数 334
阅读 8
收藏 0

说道存储过程,很多人都知道,但是真正用的人其实很少,但是在某些必要的场景,是必须使用的,虽然可以使用java代码解决,但是效率性能远不及存储过程

曾经在sqlserver 以及pgadmin上用过,mysql还真没使用过,今天遇到这样的场景那就使用一次吧

场景:订单自动失效,定时任务跑批的时候会查询出失效的订单,根据失效的订单中的相关item的id,再做相应的处理

begin
     declare cargoSourceId varchar(20);
    
     declare done int;
     declare cur_test CURSOR for select cargo_source_id from orders where order_status = '10' and datediff(NOW(),update_time)>=3;
     declare continue handler FOR SQLSTATE '02000' SET done = 1;
     
         open cur_test;
         repeat
             fetch cur_test into cargoSourceId;
                         # 将要取消的失效对于的货源全部更新为“未下单”状态
             update cargo_source set is_ordered=0,update_time=now() where id=cargoSourceId;
         until done end repeat;
         close cur_test;
            # 失效订单
            update orders set order_status='50', update_time=now() where order_status = '10' and datediff(NOW(),update_time)>=3;

 end

mybatis调用:

<!-- 调用存储过程 -->
    <update id="updateOrderInvalidAfter3Days" statementType="CALLABLE">
         CALL updateOrderInvalidAfter3Days
     </update>

service调用:

@Autowired
    private OrdersMapper ordersMapper;
    
    @Override
    public void updateOrderInvalidAfter3Days() {
        int result = ordersMapper.updateOrderInvalidAfter3Days();
        System.out.println(result);
    }

tips:同样的结果不同的手段,使用更优的手段来解决问题,几年前我会选择方便自己的做法,而现在要更多的考虑项目。

 

本文转载自:http://www.cnblogs.com/leechenxiang/p/5822172.html

风间影月
粉丝 4
博文 126
码字总数 252
作品 0
无锡
技术主管
私信 提问
mybatis项目中如何调用oracle存储过程(procedure)

如题。这篇博客讲诉你如何在在spring+springmvc+mybatis项目中调用oracle的存储过程(procedure),其实主要是mybatis下如何调用存储过程,不带参数的就不说了,就说说带参数的存储过程如传参...

奔跑的菜菜
2016/01/07
3.7K
1
使用MyBatis一次执行多条SQL语句,需要配置jdbc连接串

有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错。 解决办法不外乎有三个:1、多条sql分批执行;2、存储过程或函数调用;3、sql批量执行。 今天我要说的是...

提广乾
2018/01/12
207
0
mybatis 调用存储过程,如何抛出sql异常

在用mybatis调用数据库的存储过程时,我发现有时即使mybatis失败了,乃至存储过程异常了。mybatis也不会抛出异常,下面是处理这种情况的方法 1. 有如下存储过程( sqlServer 2012) 只要将ERR...

Canaan_
2016/06/15
596
0
mybatis怎么配置和调用分页功能存储过程?

在mysql里面写了一个分页的存储过程,返回的是结果集和总的条数 请问在mybatis里面怎么配置和调用,刚接触mybatis,以前用hibernate和springjdbc都没有问题 请各位高手指教,感谢不尽....

关注
2011/12/21
3.1K
4
MySQL存储过程中使用动态行转列

本文介绍的实例成功的实现了动态行转列。下面我以一个简单的数据库为例子,说明一下。 数据表结构 这里我用一个比较简单的例子来说明,也是行转列的经典例子,就是学生的成绩 三张表:学生表...

HenrySun
2016/07/12
119
0

没有更多内容

加载失败,请刷新页面

加载更多

视频如何加水印?

很多视频制作者的视频都被他人盗用过,为了防止自己的劳动成果被他人窃取,给视频加水印对于视频制作者来说,是一件非常重要的事情。那么下面分享一个手机给视频加水印的方法,一起来看看吧!...

白米稀饭2019
41分钟前
6
0
004-Envelop-基于Blockstack的文件传输dapp

本篇文章主要介绍基于Blockstack的文件传输工具; ####A-链接地址 官网地址:https://envelop.app/ Github地址:https://github.com/envelop-app ####B-特性: 1: Share private files easil...

Riverzhou
43分钟前
9
0
SpringCloud——声明式调用Feign

Feign声明式调用 一、Feign简介 使用Ribbon和RestTemplate消费服务的时候,有一个最麻烦的点在于,每次都要拼接URL,组织参数,所以有了Feign声明式调用,Feign的首要目标是将Java HTTP客户端...

devils_os
49分钟前
9
0
《JAVA核心知识》学习笔记 (22. 数据结构)

22.1.1. 栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈...

Shingfi
55分钟前
8
0
你对AJAX认知有多少(1)?

AJAX(一) AJAX技术对于前段或者后端工程师来说,都是必不可缺的 那我们这几期都来细细品味一下AJAX的相关知识,直接上干货喽~ 1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么...

理性思考
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部