Mybatis顯示修改數據庫成功,數據庫卻沒有修改


最近在做項目時遇到一個問題,springboot+mybatis項目,執行批量更新語句,坐了分批次執行批量更新,控制台打印更新成功,然后程序還沒跑完,我就關閉程序了。可是當我回到數據庫里面查看的時候,發現數據並沒有改變,特此去研究了一下。

示例

Map<String, Object> map = new HashMap<>();
		Integer count = mapper.getCount();
		int size = 100;
		int m = count/size;
		map.put("size", size);
		for (int i = 0; i <= m; i++) {
			map.put("startIndex", i * size);
			List<NewsContentDO> contents = mapper.getAllNewsContentBy(map);
			for (NewsContentDO newsContentDO : contents) {
				String path = "/Users/admin/Desktop/pdf";
				newsContentDO.setPdfUrl(path);
			}
			mapper.updateBatch(contents);
		}
打開mybatis的日志,控制台會打印每次批量更新方法的日志,顯示更新成功,改變行數等信息。但是這個時候停止程序,數據庫是沒有任何變化的。
這個原因是因為mybatis默認不是自動提交事務的, 所以其實沒有修改數據庫,剛剛新增完后立即返回的結果,是從mybatis為了提高性能設置的緩存里讀取的,不是從數據庫讀取的。

解決方法

  1. 設定自動提交openSession( autoCommit=true)
public static SqlSession createSqlSession() {
    sqlSession = getSqlSessionFactory().openSession(true);
    return sqlSession;
}
  1. 在代碼里面寫上commit
sqlSession.commit();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM