Beego脫坑(十四) ORM之原始SQL語

2021-09-20 09:33:59 字數 3597 閱讀 9956

簡單演示

insorm:=orm.

neworm()

var user models.users

insorm.

raw(

"select name from users where id = ?",1

)..exec()

this.ctx.

writestring

(user.name)

介面說明

exec

執行 sql 語句,返回 sql.result 物件

res, err := o.

raw(

"update user set name = ?"

,"your").

exec()

if err ==

nil

queryrow

支援 struct

type user struct

var user user

err := o.

raw(

"select id, user_name from user where id = ?",1

).queryrow

(&user)

queryrows

queryrows 支援的物件還有 map 規則是和 queryrow 一樣的,但都是 slice

type user struct

var users [

]user

num, err := o.

raw(

"select id, user_name from user where id = ?",1

).queryrows

(&users)

if err ==

nil

setargs

改變 raw(sql, args…) 中的 args 引數,返回乙個新的 rawseter

用於單條 sql 語句,重複利用,替換引數然後執行。

res, err := r.

setargs

("arg1"

,"arg2").

exec()

res, err := r.

setargs

("arg1"

,"arg2").

exec

()

values / valueslist / valuesflat

raw sql 查詢獲得的結果集 value 為 string 型別,null 欄位的值為空 ``

from beego 1.1.0

values, valueslist, valuesflat 的引數,可以指定返回哪些 columns 的資料

通常情況下,是無需指定的,因為 sql 語句中你可以自行設定 select 的字段

values

返回結果集的 key => value 值

var maps [

]orm.params

num, err := o.

raw(

"select user_name from user where status = ?",1

).values

(&maps)

if err ==

nil&& num >

0

valueslist

返回結果集 slice

var lists [

]orm.paramslist

num, err := o.

raw(

"select user_name from user where status = ?",1

).valueslist

(&lists)

if err ==

nil&& num >

0

valuesflat

返回單一欄位的平鋪 slice 資料

var list orm.paramslist

num, err := o.

raw(

"select id from user where id < ?",10

).valuesflat

(&list)

if err ==

nil&& num >

0}

rowstomap

sql 查詢結果是這樣

name

value

total

100found

200查詢結果匹配到 map 裡

res :=

make

(orm.params)

nums, err := o.

raw(

"select name, value from options_table").

rowstomap

(&res,

"name"

,"value"

)// res is a map[string]inte***ce{}

rowstostruct

sql 查詢結果是這樣

name

value

total

100found

200查詢結果匹配到 struct 裡

type options struct

res :=

new(options)

nums, err := o.

raw(

"select name, value from options_table").

rowstostruct

(res,

"name"

,"value"

)fmt.

println

(res.total)

// 100

fmt.

println

(res.found)

// 200

匹配支援的名稱轉換為 snake -> camel, eg: select user_name … 需要你的 struct 中定義有 username

prepare

用於一次 prepare 多次 exec,以提高批量執行的速度。

p, err := o.

raw(

"update user set name = ? where name = ?").

prepare()

res, err := p.

exec

("testing"

,"slene"

)res, err = p.

exec

("testing"

,"astaxie"

)...

...p.

close()

// 別忘記關閉 statement

Beego脫坑(十一) ORM之建立表

beego orm 是乙個強大的 go 語言 orm 框架.已支援資料庫驅動 當我們使用orm運算元據庫時,必須要匯入資料庫驅動,如mysql orm 特性 支援 go 的所有型別儲存 輕鬆上手,採用簡單的 crud 風格 自動 join 關聯表 跨資料庫相容查詢 允許直接使用 sql 查詢 對映 ...

beego框架之orm模組

1.安裝mysql驅動 2.建立模型對映,並使用結構體的tag標籤來將結構體的成員變數和表的字段做對映。在models模組裡,被註冊的結構體與資料庫裡的表會以一種預設方式進行一一對應。然而,在實際開發中,預設的這種對映關係並不是我們所期待的,所以我們需要指定被註冊的結構體與資料庫裡的表之間的關係。其...

beego框架之 orm模型

go語言web框架中 orm使用結構體來定義 beego orm type user struct 定義字段 定義型別 定義屬性 beego orm欄位的屬性引數 pk設定為主鍵,適用於自定義其他型別為主鍵 auto 當 field 型別為 int,int32,int64,uint,uint32,u...