SqlServer调用MySQL数据库实现批量新增

项目场景:

我的需求是小程序的评论 因为分好几个模块所以有的模块需要分库,我这里商品的评论放在了MySQL数据库内 但是我的服务器和本地库只有sqlserver的所以我需要在mybatis内通过sqlserver调用MySQL库内的表实现批量的新增


问题描述

我之前写过oracle的批量新增但是没有进行远程调用过,一直报错表名找不到或者是list集合找不到未定义,数据取不到等问题


解决方案:

1.找不到表明是因为sqlserver需要使用函数去远程调用 这个函数是:

OPENQUERY 然后使用MySQLserver 去查到MySQL数据库的表即可

2.找不到list集合是因为mapper未正确定义 forecah 内找不到这个集合

List selectComments(@Param("dtsCommentVO") List dtsCommentVO);

使用注解标记名称即可

3.数据取不到是因为需要使用集合的item指向这个参数

以下是具体语法
 


这段SQL语句是一个动态生成的INSERT语句,目的是将一个MySQL服务器中的"dts_shop.dts_comment"表中的数据插入到名为"MysqlServer"的另一个数据库服务器中。

首先,这段代码中使用了OPENQUERY函数,这是SQL Server中的一个函数,它允许在查询中引用远程服务器上的对象。在这里,通过OPENQUERY函数连接到了名为"MysqlServer"的远程MySQL服务器。

然后,使用INSERT INTO语句将"dts_sh.dts_com"表中的数据插入到远程服务器。但是,这个INSERT语句是通过SELECT语句动态生成的。

在SELECT语句中,使用了一个foreach循环来遍历一个类型为DtsCommentVO的集合,每次循环生成一个带有字段值的SELECT子句。SELECT子句中的值来自于DtsCommentVO对象的属性。

最后,将生成的SELECT子句使用UNION ALL组合起来,作为INSERT INTO的SELECT子句,最终将整个SQL语句作为SELECT节点的内容,返回一个resultType为DtsCommentVO的