Go 資料庫 xorm 三 增刪查改

2021-09-01 18:36:57 字數 2248 閱讀 4351

增加操作:插入一條新的記錄,該記錄必須是未存在的,否則會返回錯誤:

_, err := x.insert(&account)
刪除操作:

_, err := x.delete(&account)
方法 delete 接受引數後,會自動根據傳進去的值進行查詢,然後刪除。比如此處,我們指定了 account 的 id 字段,那麼就會刪除 id 字段值與我們所賦值相同的記錄;如果您只對 name 字段賦值,那麼 xorm 就會去查詢 name 字段值匹配的記錄。如果多個字段同時賦值,則是多個條件同時滿足的記錄才會被刪除。

刪除操作針對的物件沒有限制,凡是按照條件查詢到的,都會被刪除(單個與批量刪除)。

獲取和修改記錄:想要修改的記錄必須是提前存在的,所以修改前要先查詢所要修改的記錄

獲取記錄:

get方法

查詢單條資料使用get方法,在呼叫get方法時需要傳入乙個對應結構體的指標,同時結構體中的非空field自動成為查詢的條件和前面的方法條件組合在一起查詢。

a. 根據id來獲得單條資料:

a:=&account{}

has, err := x.id(id).get(a)

b. 根據where獲取單條資料

a := new(account)

has, err := x.where("name=?", "adn").get(a)

c. 根據account結構體中存在的非空資料來獲取單條資料

a := &account

has, err := x.get(a)

返回的結果為兩個引數,乙個has(bool型別)為該條記錄是否存在,第二個引數err為是否有錯誤。不管err是否為nil,has都有可能為true或者false。

在獲取到記錄之後,我們就需要進行一些修改,然後更新到資料庫:

a.balance += deposit

// 對已有記錄進行更新

_, err = x.update(a)

注意,update接受的引數是指標

批量獲取資訊

err = x.desc("balance").find(&as)

在這裡,我們還呼叫了 desc 方法對記錄按照存款數額將賬戶從大到小排序。

find方法的第乙個引數為slice的指標或map指標,即為查詢後返回的結果,第二個引數可選,為查詢的條件struct的指標。

批量獲取某一屬性的值

account := make(account, 0)

err := x.where("balance = ?", 11).find(&account)

if err!=nil

println(account)

sql原裝 更新:

update categories set

display_order = case id

when 1 then 3

when 2 then 4

when 3 then 5

endwhere id in (1,2,3)

這句sql的意思是,更新display_order字段:

即是將條件語句寫在了一起。

這裡的where部分不影響**的執行,但是會提高sql執行的效率。

確保sql語句僅執行需要修改的行數,這裡只有3條資料進行更新,而where子句確保只有3行資料執行。

如果更新多個值的話,只需要稍加修改:

update categories set

display_order = case id

when 1 then 3

when 2 then 4

when 3 then 5

end,

title = case id

when 1 then 'new title 1'

when 2 then 'new title 2'

when 3 then 'new title 3'

endwhere id in (1,2,3)

資料庫的增,刪,查,改

資料庫 database 是按照資料結構 來組織 儲存和管理資料的倉庫,它產生於距今六十多年前,隨著資訊科技和市場的發展,特別是二十世紀九十年代以後,資料管理不再僅僅是儲存和管理資料,而轉變成使用者所需要的各種資料管理的方式。資料庫有很多種型別,從最簡單的儲存有各種資料的 到能夠進行海量資料儲存的大...

SQL資料庫增刪查改操作

歡迎來到unity學習 unity培訓 unity 企業培訓教育專區 這裡有很多u3d資源 u3d教程 我們致力於打造業內unity3d 培訓 學習第一品牌。今天我們學習了資料庫和資料庫的基本操作 sql是什麼?structured query language 結構化查詢語言 為何要使用sql?難...

go資料庫增刪改查

prepare 準備乙個資料庫query操作,返回乙個 stmt stmt的主要方法 exec 執行不返回任何rows的資料庫語句 delete query,queryrow,close rows的主要用法 columns return string,scan,next,close func mai...