記一次Mybatis更新操作使用了查詢標籤的失誤

2021-10-10 05:15:25 字數 1338 閱讀 5786

我先寫了乙個方法

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...