问题描述

一条语句实现向两个表中添加数据

前段时间遇到需求,向一个表中添加数据,获取新增主键值。再向另一个表添加数据,其中一个字段为前一个表的主键值。并返回第二次添加的表的自增主键值。上网查到的一个方法为使用存储过程,便按照这个思路试着实现一下,现将过程回忆记录下来。

项目环境

SSM框架项目+Navicat管理MySQL数据库

解决问题

一、Navicat for MySQL创建存储过程

1.新建函数→选择“过程”

2.添加参数

模式: IN:输入参数 OUT:输出参数 INOUT:既作为输入参数,也作为输出参数

3.写存储过程里面要执行的内容

CREATE DEFINER=`root`@`%` PROCEDURE `InsertNewConsultation`(IN `user_id` int,IN `doc_id` int,IN `now_time` datetime,IN `disease_id` int,IN `patient_id` int,IN `patient_speak_text` text,OUT `patient_speak_id` int)BEGIN--声明变量DECLARE consultation_id INT;  insert into   consultation_basic    (user_id,last_reply_text,last_reply_time,consultation_status,doctor_unread_number,disease_id,patient_unread_number,patient_id,doc_id)  values    (user_id,patient_speak_text,now_time,1,1,disease_id,0,patient_id,doc_id);    SET consultation_id = @@identity;    insert into   patient_speak    (patient_speak_text,patient_user_id,patient_speak_time,isread,consultation_id)  values    (patient_speak_text,user_id,now_time,0,consultation_id);    SET patient_speak_id = @@identity;END

4.保存即可

二、MyBatis调用存储过程

  {    CALL InsertNewConsultation(      #{user_id,jdbcType=INTEGER,mode=IN},      #{doc_id,jdbcType=INTEGER,mode=IN},      #{last_reply_time,jdbcType=TIMESTAMP,mode=IN},      #{disease_type_id,jdbcType=INTEGER,mode=IN},      #{patient_id,jdbcType=INTEGER,mode=IN},      #{patient_speak_text,jdbcType=VARCHAR,mode=IN},      #{patient_speak_id,jdbcType=INTEGER,mode=OUT}    )  }

注:调用存储过程时,注意参数顺序不能错。


原文链接:https://blog.csdn.net/qq_28869233/article/details/88849986

更多信息请关注@软件老王,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。

mybatis 存储过程 tmp_count_mysql存储过程(一)-navicat与mybatis相关推荐

  1. mybatis调用oracle存储过程

    有输入与输出参数的存储过程 oracle存储过程部分代码: create or replace procedure PT_copy_Shipment_One_Data( oldShipmentId i ...

  2. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析

    mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...

  3. spring+springMvc+mybatis 调用oracle 存储过程

    最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...

  4. mybatis调用mysql存储过程_秒会mybatis调用存储过程(MySQL)

    一.简介 有的时候,我们不方便自己写SQL,而是只能调用别人提供的存储过程,那如何使用mybatis调用存储过程呢? 二.示例步骤(MySQL) 2.1 准备一张表 DROP TABLE IF EXI ...

  5. mybatis mysql 调用存储过程 多个返回值_被Mybatis坑惨了

    关注米兜Java并置顶,一起涨姿势- 关注米兜 Spring 2020     热点推荐 1 抛去try {...} catch {...} finally {...},让代码更轻便 2 无所不能的J ...

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

    前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR ...

  7. MyBatis如何调用存储过程

    本文按自底向上的顺序分享MyBatis如何调用存储过程 1. xxxMapper.xml <select id="storeProcedure" statementType= ...

  8. springboot+mybatis调用oracle存储过程

    1 存储过程参数为VARCHAR 代码逻辑:controller层定义实体类对象entity,并entity.set给存储过程的输入参数赋值,把赋值后的实体类通过service层传到dao层,然后通过 ...

  9. oracle存储过程可以回退吗,Navicat 运行 Oracle 存储过程示例

    navicat 存储过程界面功能 点击运行时,会弹出窗口填入输入参数. 使用Navicat创建存储过程 在函数位置,右键新建函数, OUT参数没有默认值,写了也没用. 软件自动生成存储过程框架,然后人 ...

最新文章

  1. ros 消息队列与缓冲区_[ROS] [笔记(1)] 一个最简单的例子:Hello Robot(消息、发布者与订阅者)...
  2. hdu-1195--Open the Lock(BFS)
  3. CodeForces - 1363E Tree Shuffling(树上贪心)
  4. Struts 2的OGNL表达式
  5. 计算机网络----wireshark抓包
  6. Servelt 中文乱码
  7. 【数字逻辑设计】Logisim构建三种多路选择器
  8. freeredius3.0 mysql_EDIUS非线性编辑系统价格,4k视频编辑系统
  9. 开源GIS(五)——openlayers中interaction的select、draw与modify
  10. 【EMV L2】终端风险管理(Terminal Risk Management)
  11. labview 一个tdms文件 两个线程同时往里写_LabVIEW 状态图(Statechart)介绍
  12. 我在飞机上,飞机在哪里?浅谈飞行模式与GPS定位
  13. 如何查看电脑本地IP+端口号
  14. 实验项目1 置换密码
  15. Navicat:Access violation at address xxxxxxxxx in module 'navicat.exe'.Read of address xxxxxx
  16. 新人略谈关于积分墙盈利模式的思考
  17. Texture tiling
  18. 脱口而出的 “ 感谢的语言 ”
  19. Ty p e O R M框架
  20. 中小企业掀起“减碳潮”,“上云”提高产品绿色竞争力

热门文章

  1. 推荐系统-Task03离线物料系统的构建
  2. 获取文本上字符出现的次数,把数据写入文件
  3. 大数据如何推动医疗行业的发展
  4. python实现登录抓取_Python网页抓取、模拟登录
  5. CCPC-EDG专场——E.Buy and Delete
  6. 采用Bert进行中文分词
  7. [tensorflow]tensorflow 2.1 函数API(The Functional API)
  8. linux初级命令行
  9. Loadrunner脚本函数
  10. 01-HTML基础与进阶-day4-录像250