当前位置: 首页 > 知识库问答 >
问题:

如何在Java Spring应用程序中提交myBatis update语句?

韩智敏
2023-03-14

我有Java Spring应用程序在jetty-maven插件中运行。当我调用myBatis insert语句时,该语句将自动提交。但是,当我调用update时,该语句没有提交。根据myBatis文档(http://www.myBatis.org/spring/transactions.html):

不能在Spring托管的SqlSession上调用sqlSession.commit()、sqlSession.rollback()或sqlSession.close()。

我启用了日志记录。以下是更新日志的内容:

2012-12-12 17:20:31,669 DEBUG[org.mybatis.Spring.sqlsessionutils]-创建新的SqlSession 2012-12-12 17:20:31,669 DEBUG[org.mybatis.Spring.sqlsessionutils]-SqlSession[org.apache.ibatis.session.defaults.defaultsqlsession@19E86F9]未注册同步,因为同步未处于活动状态2012-12-12 17:20:31,669 DEBUGer.updateMyItem]-==>正在准备:update myTable set date=?where id=?2012-12-12 17:20:31,700 DEBUG[com.persistence.mymapper.updateMyItem]-==>参数:2012-11-26 00:00:00.0(时间戳),0(整数)2012-12-12 17:20:31,700 DEBUG[org.mybatis.spring.sqlsessionutils]-关闭非事务性SqlSession[org.apache.ibatis.session.defaults.defaultsqlsession

插入时,日志为:

2012-12-12 16:35:53,932 DEBUG[org.mybatis.Spring.sqlsessionutils]-创建新的SqlSession 2012-12-12 16:35:53,932 DEBUG[org.mybatis.Spring.session.defaults.defaultsqlsession@22da8f]未注册同步,因为同步不活动2012-12-12 16:35:53,932 DEBUG[org.springframework.JDBC.DataSource.datasourceutils]-从DataSource提取JDBC连接2012-12-12 16:35:53,er.insertMyItem]-==>准备:插入到myTable(id,date)值(?,?)2012-12-12 16:35:53,932 DEBUG[com.persistence.mymapper.insertMyItem]-==>参数:5(整数),2012-11-26 00:00:00.0(时间戳)2012-12-12 16:35:53,932 DEBUG[org.mybatis.spring.sqlsessionutils]-关闭非事务性SqlSession[org.apache.ibatis.session.defaults.defaultsqlsession

insert和update log语句似乎表明了相同的基本步骤。

共有1个答案

彭衡
2023-03-14

经过更多的研究,我发现这是客户的问题。它总是为update语句中的id传递0。记录的ID大于0。在此过程中,我配置了spring txn管理。正是在这一点上,我观察到了相同的行为,并意识到这一定是服务器端配置问题以外的问题。很抱歉在发帖之前没有捕捉到。

 类似资料:
  • 在Spark bin目录下的spark-submit可以用来在集群上启动应用程序。它可以通过统一的接口使用Spark支持的所有集群管理器 ,所有你不必为每一个管理器做相应的配置。 用spark-submit启动应用程序 bin/spark-submit脚本负责建立包含Spark以及其依赖的类路径(classpath),它支持不同的集群管理器以及Spark支持的加载模式。 ./bin/spark-s

  • 我一直在研究swagger,认为它是为我的团队api自动生成文档的一种可能方式http://swagger.io/getting-started/.这似乎很有希望,但我发现他们的文档缺乏。 话虽如此,我有几个非常基本的问题。 是否可以只使用Spring应用程序来使用swagger?我们的应用程序既不是jersey也不是JAX-RS应用程序。有人知道普通Spring应用程序是否可以与swagger一

  • 我正在处理我的编程任务,并希望该程序将数据存储在sql数据库中。我通过使用SqlConnection和Sql命令变量/方法做到了这一点。我的问题是这个程序连接到我电脑上的数据库,所以当我提交它进行标记时,这个程序将无法工作,因为讲师没有数据库。 a) 有没有一种方法可以将完整的数据库存储为VisualStudio项目的一部分?b) 有没有一种方法可以将数据库与程序一起提交,从而不需要更改连接字符串

  • 我使用spark-submit命令在32核64 GB服务器上运行pyspark应用程序。 申请步骤: > df1 = 从 csv 文件(字段 1、字段 2、字段 3、字段 4)加载 5 亿个数据集。 df2 = 从 mongodb 加载 5 亿个条目(使用 Spark mongo 适配器)(字段 1、字段 2、字段 3)。 左连接操作(步骤抛出异常 java.lang.OutOfMemoryErr

  • 自从 v0.34.0,Electron 就允许提交应用包到 Mac App Store (MAS)。这个向导提供的信息有: 如何提交应用和 MAS 构建的限制。 Note: Submitting an app to Mac App Store requires enrolling in the Apple Developer Program, which costs money. Mac App

  • 本指南提供以下相关资讯: 如何在 macOS 上为 Electron 应用签名; 如何在 Mac App Store (MAS) 上提交 Electron 应用; 对于 MAS 构建版本的局限性。 要求 要为 Electron 应用签名,则必须首先安装下列应用: Xcode 11 或更高版本。 electron-osx-sign npm 模块. 您还必须注册一个苹果开发者帐户,并加入 苹果开发者计