我先寫了乙個方法
void
updateuser
(user user)
;
然後寫配置檔案
"updateuser" parametertype=
"user"
>
update user set username = #
,address=#
where id = #
<
/select>
這裡犯了乙個錯誤 因為我們要執行更新操作 卻寫了查詢的標籤
當我們在測試類中執行這個**的時候
即使我們關閉了自動提交,也沒有手動commit操作
private inputstream is;
private sqlsession sqlsession;
private userdao userdao;
is = resources.
getresourceasstream
("sqlmapconfig.xml");
sqlsessionfactorybuilder builder =
newsqlsessionfactorybuilder()
; sqlsessionfactory factory = builder.
build
(is)
; sqlsession = factory.
opensession
(false);
userdao = sqlsession.
(userdao.
class);
user user1 = userdao.
finduserbyid(41
);system.out.
println
(user1)
; user1.
setusername
("蕪~起飛飛飛飛");
user1.
setaddress
("格陵蘭島");
userdao.
updateuser
(user1)
;
但是仍然會對資料庫進行操作 並不會回滾
因為在mybatis中 只有呼叫sqlsession的增刪改才需要手動提交(預設是關閉自動提交的)
而查詢操作是不需要commit的
通過這次失誤 我推測
mybatis不會檢查你的sql語句到底是查詢 還是增刪改
它只會根據你寫的標籤來決定它採取的行動
記一次ORACLE查詢更新
結轉專案表.結轉收入 結轉專案表.結轉金額 1 稅率表.稅率 where條件是表名中 表名.id 在查詢結果中存在對應的值才能執行更新語句 update 表名 set 表名.欄位名 select 查詢結果.欄位名 from 查詢語句 查詢結果名 where 表名.id 查詢結果.sys id upd...
mysql分段更新 記一次MYSQL更新優化
引言 今天 august 5,2015 5 34 pm 在給資料庫中一張表的結構做一次調整,新增了幾個字段,後面對之前的資料進行重新整理,重新整理的內容是 對其中的乙個已有欄位url進行匹配,然後更新新加的字段type和typeid。後來就寫了個shell指令碼來刷資料,結果執行shell指令碼後我...
記一次archlinux系統更新導致無法進入桌面
今天更新系統,重啟後進不了桌面了 用root,可以進桌面 建立個新使用者,也能進桌面 journalctl xb u user 1000 看到是pam出現問題 8月 22 18 55 50 xx systemd 1733 pam unix systemd user session session o...