日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

测试Mybatis时事务自动回滚,无法完成增删改

發布時間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试Mybatis时事务自动回滚,无法完成增删改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

單獨使用myBatis進行測試時,進行增刪改查,進行查詢時正常顯示,但是進行插入、修改、刪除時數據庫中總是沒法修改,查看控制臺輸出:

原因

默認情況下,事務不是自動提交

查看Mybatis的opensession()源碼

可以看到有好多重載方法,其中帶參數 paramBoolean 是boolean類型的,此參數默認為false,是不會自動提交事務。

工具類

查看opensession()所在的工具類SqlSessionFactoryUtils.java

import java.io.IOException; import java.io.InputStream;import org.apache.ibatis.datasource.pooled.PooledDataSource; import org.apache.ibatis.io.Resources; import org.apache.ibatis.mapping.Environment; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.transaction.TransactionFactory; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;import com.learn.ssm.chapter3.mapper.RoleMapper; import com.learn.ssm.chapter3.mapper.RoleMapper2; import com.learn.ssm.chapter3.pojo.Role;public class SqlSessionFactoryUtils {private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class;private static SqlSessionFactory sqlSessionFactory = null;private SqlSessionFactoryUtils() {}public static SqlSessionFactory getSqlSessionFactory() {synchronized (LOCK) {if (sqlSessionFactory != null) {return sqlSessionFactory;}String resource = "mybatis-config.xml";InputStream inputStream;try {inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();return null;}return sqlSessionFactory;}}public static SqlSession openSqlSession() {if (sqlSessionFactory == null) {getSqlSessionFactory();}return sqlSessionFactory.openSession();} }

可以看到是沒有傳遞參數的,所以默認是不會自動提交事務的。

解決

將工具類中的opensession()方法中傳遞參數true,使其自動提交。

再次執行插入后就會提示:

?

然后查看數據庫就已經插入數據了。

總結

以上是生活随笔為你收集整理的测试Mybatis时事务自动回滚,无法完成增删改的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。