前端传参数进行Mybatis调用mysql存储过程执行返回值详解


Posted in MySQL onAugust 14, 2022
目录

查询数据库中的存储过程:

方法一:

select `name` from mysql.proc where db = 'your_db_name' and `type`; = 'PROCEDURE'

方法二:

 show procedure status;

你要先在数据库中建一个表,然后创建存储过程

前端传参数进行Mybatis调用mysql存储过程执行返回值详解

我建的表a_tmp,存储过程名称bill_a_forbusiness

执行语句:  CALL bill_a_forbusiness(44,44,52,47,44,46,52,52,349171)

存储过程调用方式:

CALL Pro_Get_CO2('2018','','','');
CALL Pro_Get_EnergyData('2017');
CALL Pro_Get_Carbon_OrgType('2014');
CALL 存储过程名(参数);

查看存储过程或函数的创建代码:

show create procedure proc_name;
show create function func_name;

前端传参数进行Mybatis调用mysql存储过程执行返回值详解

因为这个没有返回值所以需要先传参调用执行,再查询

前端代码:

<template>
  <div class="app-container">
    <el-form
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      v-show="showSearch"
      label-width="68px"
    >
      <el-form-item label="参数输入" prop="a">
        <el-input
          v-model="queryParams.a"
          placeholder="请输入第一参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="b">
        <el-input
          v-model="queryParams.b"
          placeholder="请输入第二参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="c">
        <el-input
          v-model="queryParams.c"
          placeholder="请输入第三参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="d">
        <el-input
          v-model="queryParams.d"
          placeholder="请输入第四参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="e">
        <el-input
          v-model="queryParams.e"
          placeholder="请输入第五参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="f">
        <el-input
          v-model="queryParams.f"
          placeholder="请输入第六参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="g">
        <el-input
          v-model="queryParams.g"
          placeholder="请输入第七参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="h">
        <el-input
          v-model="queryParams.h"
          placeholder="请输入第八参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数输入" prop="abc">
        <el-input
          v-model="queryParams.abc"
          placeholder="请输入第九参数"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <!-- <el-form-item label="录入人" prop="userName">
        <el-input
          v-model="queryParams.userName"
          placeholder="请输入办理人名字"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="操作日期" prop="recordDate">
        <el-date-picker clearable size="small"
          v-model="queryParams.recordDate"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="选择操作日期">
        </el-date-picker>
      </el-form-item> -->
      <el-form-item>
        <el-button
          type="primary"
          icon="el-icon-top-right"
          size="mini"
          @click="handleQuery"
          >传值/执行</el-button
        >
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
          >重置</el-button
        >
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="returnQuery"
          >返回/查询</el-button
        >
      </el-form-item>
    </el-form>

    <el-row :gutter="10" class="mb8">
<right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getProcList"
      ></right-toolbar>
    </el-row>

    <el-table
      v-loading="loading"
      :data="returnprocList"
      @selection-change="handleSelectionChange"
    >
      <!-- <el-table-column type="selection" width="55" align="center" /> -->
      <el-table-column
        label="序号"
        align="center"
        prop=""
        type="index"
        width="60"
      />
      <el-table-column label="记录id" align="center" prop="Id" />
      <el-table-column
        label="第一参数趟次"
        align="center"
        prop="a"
        width="200"
      />
      <el-table-column label="第二参数趟次" align="center" prop="b" />
      <el-table-column label="第三参数趟次" align="center" prop="c" />
      <el-table-column label="第四参数趟次" align="center" prop="d" />
 <el-table-column label="第五参数趟次" align="center" prop="e" />
      <el-table-column label="第六参数趟次" align="center" prop="f" />
      <el-table-column label="第七参数趟次" align="center" prop="g" />
      <el-table-column label="第八参数趟次" align="center" prop="h" />
      <el-table-column label="趟次总金额" align="center" prop="abc" />
<!-- 刷新查询 -->
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryparameters.pageNum"
      :limit.sync="queryparameters.pageSize"
      @pagination="getProcList"
    />
</template>

 端js代码:

<script>
import {
  listProc,
  getProc,
  delProc,
  addProc,
  updateProc,
  exportProc,
  returnProc,
} from "@/api/stock/proc";
 
export default {
  name: "Proc",
  dicts: ["record_type"],
  data() {
    return {
      // 遮罩层
      loading: true,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 存储过程表格数据
      procList: [],
      returnprocList: [],

      // 查询参数
      queryParams: {

        a: null,
        b: null,
        c: null,
        d: null,
        e: null,
        f: null,
        g: null,
        h: null,
        abc: null,
        //C: null,
      },
      queryparameters:{
        pageNum: 1,
        pageSize: 10,
        recordType: 1,

      },

    };
  },
  created() {
    this.getList();
    this.getProcList();

  },
  methods: {
    /** 查询执行数据 */
    getList() {
      this.loading = true;
      listProc(this.queryParams).then((response) => {
        this.procList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
     /** 查询返回列表 */
    getProcList() {
      this.loading = true;
      returnProc(this.queryparameters).then((response) => {
        this.returnprocList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },


    // 表单重置
    reset() {
      this.form = {
        Id: null,
        recordType: null,
        a: null,
        b: null,
        c: null,
        d: null,
        e: null,
        f: null,
        g: null,
        h: null,
        abc: null,
        t: null,
        tc: null,
        min1: null,

      };

    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
     /** 返回刷新按钮操作 */
     returnQuery() {
      this.queryparameters.pageNum = 1;
      this.getProcList();
    },

    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },

};
</script>

 接口代码:

前端传参数进行Mybatis调用mysql存储过程执行返回值详解

import request from '@/utils/request'

// 查询列表
export function listProc(query) {
    return request({
      url: '/stock/proc/list',
      method: 'get',
      params: query
    })
  }

// 查询
export function returnProc(query) {
  return request({
    url: '/stock/proc/query',
    method: 'get',
    parameters: query
  })
}

Java代码:

controller:

@RestController
@RequestMapping("/stock/proc")
public class StockProcController extends BaseController
{
    @Autowired
    private IStockProcService stockProcService;

    /**
     * 查询列表
     */
    //@PreAuthorize("@ss.hasPermi('stock:proc:list')")
    @GetMapping("/list")
    public TableDataInfo list(StockProc stockProc)
    {
startPage();
            List<StockProc> paramlist = stockProcService.selectStockProcParamList(stockProc);
            //return getDataTable(paramlist);
        return null;

    }
/**
     * 获取外出申请详细信息
     */
   @PreAuthorize("@ss.hasPermi('stock:Proc:query')")
    @GetMapping("/query")
    public TableDataInfo getInfo(StockProc stockProc)
    {
        startPage();
        List<StockProc> list = stockProcService.selectStockProcList(stockProc);

        return getDataTable(list);
    }
}

实体层:

dao/dto

package com.ruoyi.stock.domain;
 
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * 存储过程页面
 *
 */
public class StockProc extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @Excel(name = "序号")
//    @NotBlank(message = "该字段不能为空")
    private int id;

    /** 第一编号 */
    @Excel(name = "第一参数趟次")
    private int a;

    /** 第一编号 */
    @Excel(name = "第二参数趟次")
    private int b ;
    /** 第一编号 */
    @Excel(name = "第三参数趟次")
    private int c;
    /** 第一编号 */
    @Excel(name = "第四参数趟次")
    private int d;
    /** 第一编号 */
    @Excel(name = "第五参数趟次")
    private int e;
    /** 第一编号 */
    @Excel(name = "第六参数趟次")
    private int f;
    /** 第一编号 */
    @Excel(name = "第七参数趟次")
    private int g;
    /** 第一编号 */
    @Excel(name = "第八参数趟次")
    private int h;
    /** 第一编号 */
    @Excel(name = "趟次总金额")
    private int abc;
    /** 第一编号 */
    @Excel(name = "趟")
    private int t;
    /** 第一编号 */
    @Excel(name = "趟次")
    private int tc;
    /** 第一编号 */
    @Excel(name = "小计")
    private int min1;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }
    public void setB(int b) {
        this.b = b;
    }

    public int getC() {
        return c;
    }
 
    public void setC(int c) {
        this.c = c;
    }
 
    public int getD() {
        return d;
    }
 
    public void setD(int d) {
        this.d = d;
    }
 
    public int getE() {
        return e;
    }
    public void setE(int e) {
        this.e = e;
    }
    public int getF() {
        return f;
    }
    public void setF(int f) {
        this.f = f;
    }
    public int getG() {
        return g;
    }
    public void setG(int g) {
        this.g = g;
    }
    public int getH() {
        return h;
    }
    public void setH(int h) {
        this.h = h;
    }
    public int getAbc() {
        return abc;
    }
    public void setAbc(int abc) {
        this.abc = abc;
    }
    public int getT() {
        return t;
    }
    public void setT(int t) {
        this.t = t;
    }
    public int getTc() {
        return tc;
    }
    public void setTc(int tc) {
        this.tc = tc;
    }
    public int getMin1() {
        return min1;
    }
    public void setMin1(int min1) {
        this.min1 = min1;
    }
    @Override
    public String toString() {
        return "StockProc{" +
                "id=" + id +
                ", a=" + a +
                ", b=" + b +
                ", c=" + c +
                ", d=" + d +
                ", e=" + e +
                ", f=" + f +
                ", g=" + g +
                ", h=" + h +
                ", abc=" + abc +
                ", t=" + t +
                ", tc=" + tc +
                ", min1=" + min1 +
                '}';
    }
}

server层:

public interface IStockProcService
{
    /**
     * 查询列表
     * @return 记录集合
     */
    public List<StockProc> selectStockProcList(StockProc stockProc);
    public List<StockProc> selectStockProcParamList(StockProc stockProc);
}

Impl代码:

@Service
public class StockProcImpl implements IStockProcService {
    @Autowired
    private StockProcMapper stockProcMapper;
    /**
     *
     * @param 列表记录
     * @return
     */
    @Override
    public List<StockProc> selectStockProcList(StockProc stockProc) {
        //return stockProcMapper.selectStockProcList(stockProc);
        return stockProcMapper.selectStockProcList(stockProc);
    }
    @Override
    public List<StockProc> selectStockProcParamList(StockProc stockProc) {
        return stockProcMapper.selectStockProcParamList(stockProc);
        //return null;
    }
}

mapper代码:

public interface StockProcMapper
{
    /**
     * 查询列表
     * 
     * @param stockProc 记录
     * @return 集合
     */
    public List<StockProc> selectStockProcList(StockProc stockProc);

    public List<StockProc> selectStockProcParamList(StockProc stockProc);
}

mybatis的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="com.ruoyi.stock.mapper.StockProcMapper">
    <resultMap type="StockProc" id="StockProcResult">
        <result property="Id"    column="id"/>
        <result property="a"    column="a"/>
        <result property="b"    column="b"/>
        <result property="c"    column="c"/>
        <result property="d"    column="d"/>
        <result property="e"    column="e"/>
        <result property="f"    column="f"/>
        <result property="g"    column="g"/>
        <result property="h"    column="h"/>
        <result property="abc"    column="abc"/>
        <result property="t"    column="t"/>
        <result property="tc"    column="tc"/>
       <result property="min1"    column=" min1"/>
    </resultMap>
    <sql id="selectStockProcVo">
        SELECT
           a,b,c,d,e,f,g,h,abc,t,tc,min1
        FROM
            a_tmp
    </sql>
<!--使用数据库存储过程查询-->
    <select id="selectStockProcParamList" parameterType="StockProc" resultMap="StockProcResult" statementType="CALLABLE">
        call bill_a_forbusiness(#{a},#{b},#{c},#{d},#{e},#{f},#{g},#{h},#{abc})
    </select>
    <!--无参数查询-->
    <select id="selectStockProcList" parameterType="StockProc" resultMap="StockProcResult">
        <include refid="selectStockProcVo"/>
    </select>
</mapper>

最后便可以通过页面输入框的参数进行调用存储过程执行,然后点击查询返回结果列表。

到此这篇关于前端传参数进行Mybatis调用mysql存储过程执行返回值详解的文章就介绍到这了,更多相关Mybatis调用mysql内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL令人咋舌的隐式转换
Apr 05 MySQL
Mysql基础知识点汇总
May 26 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
MySQL限制查询和数据排序介绍
Mar 25 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
MySQL数据库查询之多表查询总结
Aug 05 #MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 #MySQL
MySQL存储过程及语法详解
Aug 05 #MySQL
MySQL自定义函数及触发器
Aug 05 #MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 #MySQL
Mysql中mvcc各场景理解应用
Aug 05 #MySQL
数据设计之权限的实现
You might like
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
3分钟学会一个Python小技巧
2018/11/23 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android