為什么我的mybatis是默認(rèn) 自動(dòng)提交的呢
當(dāng)我直接 commit的時(shí)候(沒寫sqlSession.close()),控制臺(tái)出日志了, 但是數(shù)據(jù)庫(kù)沒有更改。
去掉commit也一樣。
而當(dāng)我 在commit后面加上?sqlSession.close()后, 數(shù)據(jù)庫(kù)更改了。
去掉commit,數(shù)據(jù)庫(kù)也會(huì)更改。
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();
控制臺(tái)
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]]
2016-02-02
你這個(gè)方法是根據(jù)id來刪除數(shù)據(jù)庫(kù)表的數(shù)據(jù).但是你在方法里面卻用了selectList()方法,這個(gè)方法是用來查詢返回多條數(shù)據(jù)時(shí)用的.如果你要?jiǎng)h除,你就用delete()這個(gè)方法.還有一點(diǎn)是Mybatis對(duì)數(shù)據(jù)庫(kù)的增刪改操作才需要提交事務(wù).對(duì)查詢操作不需要提交事務(wù).SqlSession關(guān)不關(guān)閉與對(duì)數(shù)據(jù)庫(kù)操作返回的結(jié)果集沒有任何影響.
把圖片代碼中的第11行
:sqlSession.selectList("Student.delete",?id);
改為:sqlSession.delete("Student.delete",?id);