我在 jetty-maven 插件中运行 Java Spring 应用程序。当我调用 myBatis 插入语句时,该语句会自动提交。但是,当我调用更新时,该语句未提交。根据 myBatis 文档(http://www.mybatis.org/spring/transactions.html):
您不能通过 Spring 托管的 SqlSession 调用 SqlSession.commit()、SqlSession.rollback() 或 SqlSession.close()。
如何将我的应用程序配置为在 myBatis 更新语句上自动提交?
我启用了日志记录。以下是更新日志中的状态:
persistence.MyMapper.updateMyItem] - ooo 使用连接 [net.sourceforge.jtds.jdbc.ConnectionJDBC3@af7eaf] 2012-12-12 17:20:31,684 调试 [com.persistence.MyMapper.updateMyItem] - ==> 准备:更新我的表设置日期=?哪里id=?2012-12-12 17:20:31,700 调试 [com.persistence.MyMapper.updateMyItem] - ==> 参数:2012-11-26 00:00:00.0(时间戳),0(整数)2012-12-12 17 :20:31,700 调试 [org.mybatis.spring.SqlSessionUtils] - 关闭非事务性 SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19e86f9] 2012-12-12 17:20:31,700 调试 [org.springframework. jdbc.datasource.DataSourceUtils] - 返回到 DataSource 的 JDBC 连接 updateMyItem] - ==> 准备:更新 myTable 设置日期=?哪里id=?2012-12-12 17:20:31,700 调试 [com.persistence.MyMapper.updateMyItem] - ==> 参数:2012-11-26 00:00:00.0(时间戳),0(整数)2012-12-12 17 :20:31,700 调试 [org.mybatis.spring.SqlSessionUtils] - 关闭非事务性 SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19e86f9] 2012-12-12 17:20:31,700 调试 [org.springframework. jdbc.datasource.DataSourceUtils] - 返回到 DataSource 的 JDBC 连接 updateMyItem] - ==> 准备:更新 myTable 设置日期=?哪里id=?2012-12-12 17:20:31,700 调试 [com.persistence.MyMapper.updateMyItem] - ==> 参数:2012-11-26 00:00:00.0(时间戳),0(整数)2012-12-12 17 :20:31,700 调试 [org.mybatis.spring.SqlSessionUtils] - 关闭非事务性 SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19e86f9] 2012-12-12 17:20:31,700 调试 [org.springframework. jdbc.datasource.DataSourceUtils] - 返回到 DataSource 的 JDBC 连接
插入时,日志为:
2012-12-12 16:35:53,932 调试 [org.mybatis.spring.SqlSessionUtils] - 创建一个新的 SqlSession 2012-12-12 16:35:53,932 调试 [org.mybatis.spring.SqlSessionUtils] - SqlSession [org. apache.ibatis.session.defaults.DefaultSqlSession@22da8f] 未注册同步,因为同步未激活 2012-12-12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DataSourceUtils] - 从数据源获取 JDBC 连接2012-12-12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DriverManagerDataSource] - 创建新的 JDBC DriverManager 连接到 [jdbc:jtds:sqlserver://test/test] 2012-12-12 16:35 :53,932 DEBUG [org.mybatis.spring.transaction.SpringManagedTransaction] - JDBC 连接 [net.sourceforge.jtds.jdbc.ConnectionJDBC3@3af3cb] 将不会由 Spring 2012-12-12 16:35:53,932 DEBUG [com. .persistence.MyMapper.insertMyItem] - ooo 使用连接 [net.sourceforge.jtds.jdbc.ConnectionJDBC3@3af3cb] 2012-12-12 16:35:53,932 调试 [com.persistence.MyMapper.insertMyItem] - ==> 准备:插入进入 myTable (id,date) 值 (?, ?) 2012-12-12 16:35:53,932 DEBUG [com.persistence.MyMapper.insertMyItem] - ==> 参数:5(Integer), 2012-11-26 00 :00:00.0(时间戳)2012-12-12 16:35:53,932 调试 [org.mybatis.spring.SqlSessionUtils] - 关闭非事务性 SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@22da8f] 2012-12 -12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DataSourceUtils] - 将 JDBC 连接返回到数据源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 调试 [org.mybatis.spring.SqlSessionUtils] - 关闭非事务性 SqlSession [org.apache.ibatis.session。 defaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DataSourceUtils] - 将 JDBC 连接返回到 DataSourceinsertMyItem] - ==> 准备:插入 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 调试 [org.mybatis.spring.SqlSessionUtils] - 关闭非事务性 SqlSession [org.apache.ibatis.session。 defaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DataSourceUtils] - 将 JDBC 连接返回到 DataSourcedefaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DataSourceUtils] - 将 JDBC 连接返回到 DataSourcedefaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 调试 [org.springframework.jdbc.datasource.DataSourceUtils] - 将 JDBC 连接返回到 DataSource
插入和更新日志语句似乎指示相同的基本步骤。