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

相关文章

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu