mycat mybatis 调用存储过程多语句操作

2024-05-12 02:38

本文主要是介绍mycat mybatis 调用存储过程多语句操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mycat结合mybatis调用存储过程

mycat调用存储过程,项目示例,已经测试通过的。
<select id="callArchiveData" parameterType="com.hundsun.cloudtrade.match.dto.req.CallArivateDataReq" resultType="com.hundsun.cloudtrade.match.dto.req.CallArivateDataReq"><![CDATA[ /*!mycat:sql=SELECT 1 FROM tb_day_transaction WHERE firm_account = ${firm_account} */{CALL ARCHIVE_DATA(#{firm_account,mode=IN,jdbcType=INTEGER},#{hold_date,mode=IN,jdbcType=INTEGER},@p_error_no,@p_error_info)};SELECT @p_error_no as p_error_no,@p_error_info as p_error_info;]]>  </select>  
注意点:
1.没有callable
2.前面的 /*!mycat:sql=SELECT 1 FROM tb_day_transaction WHERE firm_account = ${firm_account} */ 参考mycat的注解,官网的学习文档里就有
3.mycat 有些语句是不支持的,比如 insert into …… select ……,具体可以网上找。使用存储过程可以避免这点
4.mycat 的注解就是告诉 mycat 后面的语句是在哪个 db 数据库进行执行,所以要求存储过程的内容一定得是同一个数据库里的数据进行的操作

mycat多语句操作

无意间测试发现的问题:mybatis 支持多语句同时操作数据库,比如:
	<update id="clearData" parameterType="com.hundsun.cloudtrade.match.dto.req.ClearDataReq"><![CDATA[DELETE FROM tb_day_transaction WHERE firm_account = #{firm_account};UPDATE tb_conf_tradedays SET init_flag=0,clear_flag=0 WHERE firm_account = 0;]]></update>
但是,如果使用 mycat ,在实际的项目中表 tb_day_transaction 和表 tb_conf_tradedays 不在同一个数据库的话,会出现问题
在执行了第一条语句 DELETE FROM tb_day_transaction WHERE firm_account = #{firm_account}; 后,
mycat 还是会在同一个数据库下,执行 UPDATE tb_conf_tradedays SET init_flag=0,clear_flag=0 WHERE firm_account = 0;
可以拆开,分成两个 id 的 sql 来写






这篇关于mycat mybatis 调用存储过程多语句操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981374

相关文章

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语