簡單演示
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.0valuesvalues, valueslist, valuesflat 的引數,可以指定返回哪些 columns 的資料
通常情況下,是無需指定的,因為 sql 語句中你可以自行設定 select 的字段
返回結果集的 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 中定義有 usernameprepare
用於一次 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...