当前位置: 首页 > news >正文

springboot mybatis-plus 对接 sqlserver 数据库 批处理的问题

问题:
在对接 sqlserver数据库的时候 主子表 保存的时候
子表批量保存 使用的 mybatis-plus提供的saveOrUpdateBatch 这个方法
但是 报错
报错内容为 :
com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。

框架版本
sprin boot 2.0 +
mybatis-plus 3.3.1
mybatis-plus 代码生成器 mybatis-plus-generator: 3.3.2

SQL Server JDBC: mssql-jdbc 版本 :8.4.1.jre8

经过排查后
猜测 应该是 mssql-jdbc 和 mybatis-plus 不兼容把

mssql-jdbc 和 mybatis-plus 都调整的了版本 还是不行

最后我的结论 应该是 mybatis-plus在处理 sqlserver 批处理的时候
没有考虑这种情况
最后也没找到合适的解决方案

最后实现了两种解决方案 仅供参考
方案一:
在使用这个 批处理方法的时候 捕获异常

       // 对于sqlserver    批处理的问题// mybatis-plus 提供的 saveOrUpdateBatch saveBatch 这两个方法啊 经过测试 会报错//   如果非要用 mybatis-plus 的这个 saveOrUpdateBatch 方法// 必须要捕获异常  但是不知道会不会对事务有影响// 稳妥点的方案 批处理 写 xml文件 原生sql 执行 但是写起来麻烦//  xml 文件 放的位置 已经application.yml 配置文件中定义好了try {saveOrUpdateBatch(etMaintain.getEtMaintainsubList());}catch (UncategorizedSQLException e){e.printStackTrace();}

方案二 使用 xml 文件 生成sql 语句 来执行 批量处理

第一步 配置 xml 的存放位置

mybatis-plus:
mapper-locations: classpath:/mapper/*.xml

第二步编写 相对应的xml文件
举例说明
useGeneratedKeys=“true” 这个key 注意一下 网上有说 这个key 也会导致这个问题的出现

<?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.yurui.pda.mapper.TransSubMapper"><insert id="saveTransSubs" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="sid">INSERT INTO Pr_TransSub ( SPMCNO, SPMCRoutID, SItemName, SProcedureID, SEmplID_Product, SQtys_Plan, SDate)VALUES<foreach collection="transSubs" item="transSub" separator=",">(#{transSub.spmcno}, #{transSub.spmCRoutID}, #{transSub.sitemName}, #{transSub.sprocedureID},#{transSub.semplidProduct}, #{transSub.sqtysPlan}, #{transSub.sdate})</foreach></insert>
</mapper>
http://www.lryc.cn/news/28508.html

相关文章:

  • Acwing---843. n-皇后问题——DFS
  • Android事件分发机制
  • python版协同过滤算法图书管理系统
  • Redis基础入门
  • 【微服务】Feign实现远程调用和负载均衡
  • Windows使用QEMU搭建arm64 ubuntu 环境
  • NodeJS安装
  • Gin 优雅打印请求与回包内容
  • 关于k8s中ETCD集群备份灾难恢复的一些笔记
  • 【设计模式之美 设计原则与思想:设计原则】19 | 理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
  • 2023年全国最新高校辅导员精选真题及答案13
  • 【XXL-JOB】XXL-JOB定时处理视频转码
  • optuna用于pytorch的轻量级调参场景和grid search的自定义设计
  • 语法篇--汇编语言先导浅尝
  • 【ID:17】【20分】A. DS顺序表--类实现
  • 【java web篇】Tomcat的基本使用
  • MySQL实战解析底层---行锁功过:怎么减少行锁对性能的影响
  • 初识STM32单片机
  • 数据结构与算法系列之单链表
  • MySQL基础
  • 面试热点题:环形链表及环形链表寻找环入口结点问题
  • 【算法】DFS与BFS
  • 湖州银行冲刺A股上市:计划募资约24亿元,资产质量水平较高
  • 高性能网络I/O框架-netmap源码分析
  • SpringBoot监听机制-以及使用
  • 若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
  • C++---最长上升子序列模型---拦截导弹(每日一道算法2023.3.4)
  • 【机器学习面试】百面机器学习笔记和问题总结+扩展面试题
  • 【2021.12.28】ctf逆向中的迷宫问题(含exe及wp)
  • WSL2使用Nvidia-Docker实现深度学习环境自由部署