一個新穎簡便的golang orm . 容易比較容易上手。

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

About

一個資料庫ORM.

How to use?

Insert

go get github.com/ablegao/orm

例子

//引用模組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()//deleteuser.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 的主要作用是過濾查詢條件, 最終將會轉換為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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.