前端传参数进行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的MVCC多版本并发控制的实现
Apr 14 MySQL
浅谈mysql执行过程以及顺序
May 12 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
带你学习MySQL执行计划
May 31 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
mysql创建存储过程及函数详解
Dec 04 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
Mar 22 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
MySQL 数据表操作
May 04 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
Mysql 文件配置解析介绍
May 06 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多文件上传功能实现原理及代码
2013/04/18 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
php上传大文件设置方法
2016/04/14 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
JS中表单的使用小结
2014/01/11 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
用js编写留言板
2020/03/17 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
岗位职责说明书
2014/05/07 职场文书
学校端午节活动总结
2015/02/11 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python