SSM(MyBatis+Spring+SpringMVC)Oracle存储过程应用实战

      存储过程可以让我们的数据库操作的效率变高,因为存储过程是提前编译好了。不同于我们发送一条SQL,每次都需要经历系列步骤(语法检查——语义分析——编译——缓存——执行),使用存储过程的话直接就是执行编译好的内容,这样有利于提升系统的性能,尤其是在高并发的情况下这样的效果应该是最为明显的。那么接下来我就分享一下我是如何使用Oracle的存储过程的吧!文中的JdbcType与相应的JavaType可参照我的另一篇博客:jdbcType与Java类型对应关系表格

1. 查询数据

1.1 定义package以及存储过程
--定义package
CREATE OR REPLACE PACKAGE pk_rainQuality IS
    TYPE rainQuality_cursor IS REF CURSOR;
END pk_rainQuality;

--定义存储过程
CREATE OR REPLACE PROCEDURE getRainQulity
(
   startIndex IN NUMBER,
   maxIndex IN NUMBER,
   r_rainQulity OUT pk_rainQuality.rainQuality_cursor
) AS
BEGIN
    --分页查询语句
    OPEN r_rainQulity FOR
        SELECT * FROM (
         SELECT q1.*,ROWNUM rownum_ FROM(
            SELECT * FROM rainQuality
            ORDER BY monitorTime DESC
        ) q1 WHERE ROWNUM<=maxIndex
   ) q2 WHERE rownum_>startIndex;
END;
1.2 业务逻辑层代码实现,使用Map集合用于保存返回结果以及参数
package com.qingyun.rainQuality.service;

import com.qingyun.rainQuality.dao.RainQualityMapper;
import com.qingyun.rainQuality.pojo.RainQuality;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;

@Service
public class RainQualityServiceImpl implements RainQualityService{
   

    @Resource
    RainQualityMapper rainQualityMapper;

    /**
     * 获取总记录数
     */
    @Override
    public Integer getRainQualityCount() {
   

        HashMap<String,Object> map=new HashMap<String,Object>();

        rainQualityMapper.getRainQualityCount(map);

        return (Integer) map.get("count");
    }

    /**
     * 获取所有雨量信息记录
     *
     * @param startIndex
     * @param maxIndex
     */
    @Override
    public List<RainQuality> getRainQualityList(Integer startIndex, Integer maxIndex) {
   

        HashMap<String
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值