前端传参数进行Mybatis调用mysql存储过程执行返回值实例分析

蜗牛 互联网技术资讯 2022-08-14 141 0

这篇“前端传参数进行Mybatis调用mysql存储过程执行返回值实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“前端传参数进行Mybatis调用mysql存储过程执行返回值实例分析”文章吧。

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

    方法一:

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

    方法二:

     show procedure status;

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

    前端传参数进行Mybatis调用mysql存储过程执行返回值实例分析  mybatis 第1张

    我建的表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存储过程执行返回值实例分析  mybatis 第2张

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

    前端代码:

    <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存储过程执行返回值实例分析  mybatis 第3张

    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存储过程执行返回值实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注蜗牛博客行业资讯频道。

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    评论

    有免费节点资源,我们会通知你!加入纸飞机订阅群

    ×
    天气预报查看日历分享网页手机扫码留言评论Telegram