Go語言:orm ablegao/orm
一個好用直觀的 數據庫操作ORM
Filter or FilterOr
.Filter(fieldname , val )
Filter 作為orm 的主要作用是過濾查詢條件, 最終將會轉換為sql 語句中的where 條件語句。 可以填寫多次, 多次數據為and 關系
FilterOr 作為Orm 的主要過濾查詢條件, 最終將妝化為sql 語句的where 條件語句 , 可以填寫多次, 多次數據以 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'
關于Filter字段的魔法參數
目前支持:
__exact 精確等于 like 'aaa' __iexact 精確等于 忽略大小寫 ilike 'aaa' __contains 包含 like '%aaa%' __icontains 包含 忽略大小寫 ilike '%aaa%',但是對于sqlite來說,contains的作用效果等同于icontains。 __gt 大于 __gte 大于等于 __ne 不等于 __lt 小于 __lte 小于等于 __startswith 以...開頭 __istartswith 以...開頭 忽略大小寫 __endswith 以...結尾 __iendswith 以...結尾,忽略大小寫
尚未支持:
__in 存在于一個list范圍內 __range 在...范圍內 __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的日 __isnull=True/False
Change
修改數據, 執行時,相當于 sql 語句中的set
傳入一個結構字段 和值 .Change("Field" , 1)
update from xxx set field=1
可以添加魔法參數:
.Change("Field__add" ,1 ) update from xxx set field=field+1
__add 累加 field=field+1 __sub 累減 field=field-1 __mult 累乘 field=field*1 __div 累計出發 field=field/1
例子
//引用模塊 import "github.com/ablegao/orm" //mysql 驅動 import _ "github.com/go-sql-driver/mysql" //建立連接 // 參數分別為 名稱 , 驅動, 連接字符串 // 注:必須包含一個default 連接, 作為默認連接。 orm.NewDatabase("default" , "mysql" , "user:passwd@ip/database?charset=utf8") //建立一個數據模型。 type UserInfo struct { orm.Object Id int64 `field:"id" auto:"true" index:"pk"` Name string `field:"username"` Passwd string `field:"password"` } //數據庫表名稱 func(self *UserInfo) GetTableName()string{ return "database.user_info" } //查詢一個用戶名為 "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的所有數據 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()
本文由用戶 e73b 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!