亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我的mybatis是默認 自動提交的呢

當我直接 commit的時候(沒寫sqlSession.close()),控制臺出日志了, 但是數據庫沒有更改。

去掉commit也一樣。

而當我 在commit后面加上?sqlSession.close()后, 數據庫更改了。

去掉commit,數據庫也會更改。

public?static?void?main(String[]?args)?{
delete(5);
List<Student>?list?=?queryStudentByID(new?Student(5,?12,?"li"));
System.out.println(list);
}
public?static?void?delete(int?id)?{
DBAccess?dbAccess?=?new?DBAccess();
SqlSession?sqlSession?=?null;
try?{
sqlSession?=?dbAccess.getSqlSession();
sqlSession.selectList("Student.delete",?id);
sqlSession.commit();
//sqlSession.close();

控制臺

DEBUG [main] - ==> ?Preparing: DELETE FROM student WHERE id =??

DEBUG [main] - ==> Parameters: 5(Integer)

DEBUG [main] - ==> ?Preparing: SELECT * FROM student WHERE id = ??

DEBUG [main] - ==> Parameters: 5(Integer)

DEBUG [main] - <== ? ? ?Total: 1

[Student [id=5, age=14, name=li]]


正在回答

1 回答

你這個方法是根據id來刪除數據庫表的數據.但是你在方法里面卻用了selectList()方法,這個方法是用來查詢返回多條數據時用的.如果你要刪除,你就用delete()這個方法.還有一點是Mybatis對數據庫的增刪改操作才需要提交事務.對查詢操作不需要提交事務.SqlSession關不關閉與對數據庫操作返回的結果集沒有任何影響.

把圖片代碼中的第11行

:sqlSession.selectList("Student.delete",?id);

改為:sqlSession.delete("Student.delete",?id);


0 回復 有任何疑惑可以回復我~
#1

風中過客 提問者

謝謝, 沒注意到后面改成了delete
2016-02-02 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我的mybatis是默認 自動提交的呢

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號