企业网站建设经验分享,wordpress 显示字体,WordPress多功能主题Cosy,网站建设 翻译问题#xff1a; 在对接 sqlserver数据库的时候 主子表 保存的时候 子表批量保存 使用的 mybatis-plus提供的saveOrUpdateBatch 这个方法 但是 报错 报错内容为 #xff1a; com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。
框架版本 sprin…问题 在对接 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 version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.yurui.pda.mapper.TransSubMapperinsert idsaveTransSubs parameterTypejava.util.List useGeneratedKeystrue keyPropertysidINSERT INTO Pr_TransSub ( SPMCNO, SPMCRoutID, SItemName, SProcedureID, SEmplID_Product, SQtys_Plan, SDate)VALUESforeach collectiontransSubs itemtransSub separator,(#{transSub.spmcno}, #{transSub.spmCRoutID}, #{transSub.sitemName}, #{transSub.sprocedureID},#{transSub.semplidProduct}, #{transSub.sqtysPlan}, #{transSub.sdate})/foreach/insert
/mapper