日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

简便的golang orm

發(fā)布時(shí)間:2025/7/25 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简便的golang orm 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一個(gè)新穎簡(jiǎn)便的golang orm . 容易比較容易上手。

from: http://studygolang.com/articles/2148



About

一個(gè)數(shù)據(jù)庫(kù)ORM.

How to use?

Insert

go get github.com/ablegao/orm

例子

//引用模塊 import "github.com/ablegao/orm"//mysql 驅(qū)動(dòng) import _ "github.com/go-sql-driver/mysql"//建立連接 // 參數(shù)分別為 名稱 , 驅(qū)動(dòng), 連接字符串 // 注:必須包含一個(gè)default 連接, 作為默認(rèn)連接。 orm.NewDatabase("default" , "mysql" , "user:passwd@ip/database?charset=utf8")//建立一個(gè)數(shù)據(jù)模型。 type UserInfo struct {orm.ObjectId int64 `field:"id" auto:"true" index:"pk"`Name string `field:"username"`Passwd string `field:"password"` }//數(shù)據(jù)庫(kù)表名稱 func(self *UserInfo) GetTableName()string{return "database.user_info" }//查詢一個(gè)用戶名為 "test1"的賬戶 user:=new(UserInfo) err:=user.Objects(user).Filter("Name","test1").One() fmt.Println(user.Id , user.Passwd , user.Name)//Update user.Name="test2" user.Objects(user).Save() // or user.Objects(user).Filter("Id" , 1).Change("Name" , "test2").Save()//查詢id小于10的所有數(shù)據(jù)users , err:=user.Objects(user).Filter("Id__lt",10).All() if err == nil {for _,userinfo:= range users{u:=userinfo.(*UserInfo)fmt.Println(u.Id , u.Passwd , u.Name)} }//Create user:=new(UserInfo) user.Name ="test1" user.Passwd ="123456" id , err:=user.Objects(user).Save()//delete user.Objects(user).Delete()// User other Database connect orm.NewDatabase("other" , "mysql" , "user:passwd@ip/database?charset=utf8") user.Objects(user).Db("other").Filter(x ,x).Delete() // or user.Objects(user).Filter().Db("other").XXX()

Filter or FilterOr

.Filter(fieldname , val )

Filter 作為orm 的主要作用是過(guò)濾查詢條件, 最終將會(huì)轉(zhuǎn)換為sql 語(yǔ)句中的where 條件語(yǔ)句。 可以填寫多次, 多次數(shù)據(jù)為and 關(guān)系

FilterOr 作為Orm 的主要過(guò)濾查詢條件, 最終將妝化為sql 語(yǔ)句的where 條件語(yǔ)句 , 可以填寫多次, 多次數(shù)據(jù)以 or 連接

user.Objects(user).Filter(“Name” , “test1”).FilterOr(“Name” , “test2”).All()
//select id,username,passwd from database.user_info where username='test1' or username='test2'

關(guān)于Filter字段的魔法參數(shù)

目前支持:

__exact 精確等于 like 'aaa'__iexact 精確等于 忽略大小寫 ilike 'aaa'__contains 包含 like '%aaa%'__icontains 包含 忽略大小寫 ilike '%aaa%',但是對(duì)于sqlite來(lái)說(shuō),contains的作用效果等同于icontains。 __gt 大于 __gte 大于等于 __ne 不等于 __lt 小于 __lte 小于等于 __startswith 以...開頭 __istartswith 以...開頭 忽略大小寫 __endswith 以...結(jié)尾 __iendswith 以...結(jié)尾,忽略大小寫

尚未支持:

__in 存在于一個(gè)list范圍內(nèi) __range 在...范圍內(nèi) __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的日 __isnull=True/False

Change

修改數(shù)據(jù), 執(zhí)行時(shí),相當(dāng)于 sql 語(yǔ)句中的set

傳入一個(gè)結(jié)構(gòu)字段 和值
.Change(“Field” , 1)

update from xxx set field=1

可以添加魔法參數(shù):

.Change(“Field__add” ,1 )
update from xxx set field=field+1

add 累加 field=field+1
sub 累減 field=field-1
mult 累乘 field=field*1
div 累計(jì)出發(fā) field=field/1

總結(jié)

以上是生活随笔為你收集整理的简便的golang orm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。