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

目录

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

方法一:

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

方法二:

 show procedure status;

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

我建的表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;

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

前端代码:

<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>

 接口代码:

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis如何调用存储过程与存储函数

    目录 1.MyBatis调用存储过程 2.MyBatis调用存储函数 1.MyBatis调用存储过程 MyBatis支持使用存储过程的配置.当使用存储过程时,需要设置一个参数"mode",其值有IN(输入参数).OUT(输出参数)和INOUT(输入/输出参数). MyBatis定义存储过程如下: <!-- 存储过程 --> <select id="selectSomeThing" statementType="CALLABLE"

  • 浅谈Mybatis+mysql 存储Date类型的坑

    场景: 把一个时间字符串转成Date,存进Mysql.时间天数会比实际时间少1天,也可能是小时少了13-14小时 Mysql的时区是CST(使用语句:show VARIABLES LIKE '%time_zone%'; 查) 先放总结: 修改方法: 1. 修改数据库时区 2. 在jdbc.url里加后缀 &serverTimezone=GMT%2B8 3. 代码里设置时区,给SimpleDateFormat.setTimeZone(...) 例外:new Date() 可以直接存为正确时间,其他

  • mybatis调用mysql存储过程(返回参数,单结果集,多结果集)

    目录 一.接收一个返回值 注意事项: 存储过程主要分成三类: 二.接收list结果集 三.返回多个结果集 四.第二种配置也可以 一.接收一个返回值 使用Map接收返回参数,output参数放在传入的param中 创建表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`

  • 关于mybatis调用存储过程获取返回值问题

    总体思路:map传值 controller: Map<String,Object> m=new HashMap<String,Object>(); m.put("name", 'zs'); m.put("password", '55555'); cardservice.bindCard(m); JSONObject json=new JSONObject(); //获得返回值 json.put("msg", m.get(&

  • mybatis调用存储过程的实例代码

    一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 create table p_user( id int primary key auto_increment, name varchar(10), sex char(2) ); insert into p_user(name,sex) values('A',"男"); insert into p_user(name,sex) values('B',"女"); ins

  • mybatis+mysql 使用存储过程生成流水号的实现代码

    使用存储过程,在操作数据库时开启事务,避免并发时同时操作造成数据重复 CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSerialNo`(IN tsCode VARCHAR(50),OUT result VARCHAR(200) ) BEGIN DECLARE tsValue VARCHAR(50); DECLARE tdToday VARCHAR(20); DECLARE nowdate VARCHAR(20); DECLARE tsQZ VAR

  • mybatis调用sqlserver存储过程返回结果集的方法

    第一种:返回值通过out输出 sqlserver存储 testMapper.xml 两种都能接收到数据的, 因为我的实体类字段与数据库的不一致,上面图片是按照数据库字段定义的,下图是按照实体类定义的,接收输出参数是按照你定义的名称返回 serviceImpl Map<String,String> objectsMap = new HashMap<>(); objectsMap.put("sno","123"); objectsMap.put(

  • mysql+mybatis实现存储过程+事务 + 多并发流水号获取

    数据库存储过程 DROP PROCEDURE IF EXISTS `generate_serial_number_by_date`; CREATE PROCEDURE `generate_serial_number_by_date`( IN param_key varchar(100), IN param_org_id bigint, IN param_period_date_format varchar(20), OUT result bigint, OUT current_datestr v

  • Mybatis调用PostgreSQL存储过程实现数组入参传递

    前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 复制代码 代码如下: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程的参数又

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

    目录 查询数据库中的存储过程: 方法一: select `name` from mysql.proc where db = 'your_db_name' and `type`; = 'PROCEDURE' 方法二:  show procedure status; 你要先在数据库中建一个表,然后创建存储过程 我建的表a_tmp,存储过程名称bill_a_forbusiness 执行语句:  CALL bill_a_forbusiness(44,44,52,47,44,46,52,52,349171

  • Mybatis调用Oracle存储过程的方法图文详解

    1:调用无参数的存储过程. 创建存储过程: Mapper.xml 配置:经测试其他标签(update.insert.select)也可以. Mapper.java MapperTest.java 测试 2:有参数的存储过程调用: 2.1存储过程的创建: 2.2Mapper.xml 的配置: 2.3Mapper.java 2.4MapperTest.java 测试 控制台输出: 3:存储过程的结果集调用. 3.1创建存储过程: 3.2 Mapper.xml 配置 配置 resultMap结果集字段

  • PHP调用MySQL存储过程并返回值的方法

    本文实例讲述了php中调用执行mysql存储过程然后返回由存储过程返回的值,分享给大家供大家参考.具体分析如下: 调用存储过程的方法. a.如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,一个php变量,也可以不必,只是没有php变量时,没有办法进行动态输入,一个Mysql变量. b.如果存储过程有OUT变量,声明一个Mysql变量,mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句,入set @mysql

  • Mybatis调用MySQL存储过程的简单实现

    1.存储过程的简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编程中

  • mybatis调用mysql存储过程并获取返回值方式

    目录 mybatis调用mysql存储过程并获取返回值 1.mysql创建存储过程 2.mybatis调用 mybatis调存储过程遇到返回值null的坑 mybatis调存储过程时返回值null mybatis调用mysql存储过程并获取返回值 1.mysql创建存储过程 #结束符号默认;, delimiter $$语句表示结束符号变更为$$ delimiter $$ CREATE PROCEDURE `demo`(IN inStr VARCHAR(100), out ourStr VARCH

  • 对python3 中方法各种参数和返回值详解

    如下所示: # -*- coding:utf-8 -*- # Author: Evan Mi # 函数 def func1(): print('in the func1') return 0 # 过程 def func2(): print('in the func2') """ 多个值用逗号分割后返回,会分装到一个tuple中返回, 接收的时候,如果使用一个变量接收,那么这个接收变量就是一个tuple类型的 如果接收的时候也用逗号分割多个值来接收,那么可以分别对应返回tupl

  • mysql存储过程原理与用法详解

    本文实例讲述了mysql存储过程原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是存储过程 存储过程的创建 存储过程的使用 查看存储过程 修改存储过程 删除存储过程 首发日期:2018-04-17 什么是存储过程: 存储过程存储了一系列sql语句 存储过程的需求场景:下边是一个经典的需求场景,很多Mysql的书都有: 存储过程存储了一系列sql语句,使得简化了操作,不要求重复执行一系列操作.只需要在需要的时候调用一下存储过程就行了. 一般来说,可以认为存储过程的功能与函数的功能类似

  • php调用mysql存储过程实例分析

    本文实例分析了php调用mysql存储过程的方法.分享给大家供大家参考.具体分析如下: Mysql存储过程创建语法,代码如下: CREATE PROCEDURE和CREATE FUNCTION : 复制代码 代码如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]])       [characteristic ...] routine_body   CREATE FUNCTION sp_name ([func_parameter[,...]])

随机推荐