ToyormGo 语言实现的 ORM 库
使用 go 实现的 orm 库,用 go 的结构体与数据库表关联,来简化各种数据库操作。
特性:
-
语句与查询:支持Insert/Replace/Find/Delete/Update等操作
-
条件:支持Limit/Offset/Where/Group by/Order by
-
支持事务
-
预加载:基于表主键的关联查询 支持BelongTo/OneToOne/OneToMany/ManyToMany 4种模式
-
预加载条件:操作预加载的表和操作基本表一样
-
预加载查询聚合:对于预加载字段会优化成Where id in [...]的查询,一个预加载字段永远只占一个Select
-
Result:生成数据库语句报告和语句导致的错误,支持预加载模式
-
上下文结构,可以在数据库语句逻辑中插入自定义逻辑
-
Collection:多数据库操作,该模式下的数据必须拥有主键,auto_increment模式失效
-
toy-doctor(检查FieldSelection参数错误)
支持 mysql, sqlite3
go版本 >1.9
安装
go get github.com/bigpigeon/toyorm
快速开始
package main import ( "github.com/bigpigeon/toyorm" _ "github.com/mattn/go-sqlite3" . "unsafe" ) type Product struct { toyorm.ModelDefault Name string Price int } func panicErr(err error) { if err != nil { panic(err) } } func main() { toy, err := toyorm.Open("sqlite3", "mydb.db") panicErr(err) defer func() { err := toy.Close() panicErr(err) }() // create ToyBrick brick := toy.Model(&Product{}).Debug() // create table _, err = brick.CreateTable() panicErr(err) // insert product _, err = brick.Insert(&Product{ Name: "apple", Price: 22, }) panicErr(err) // update product _, err = brick.Where("=", Offsetof(Product{}.Name), "apple").Update(Product{Price: 23}) panicErr(err) var product Product // find _, err = brick.Find(&product) panicErr(err) // delete _, err = brick.Delete(&product) panicErr(err) }
评论
ezormGo 语言的 ORM 库
ezorm是一个Go语言的ORM库,基于代码生成技术实现。支持mongodb/sqlserver/mysql/redis.示例代码:p := blog.BlogMgr.NewBlog()p.Title
ezormGo 语言的 ORM 库
0
MongoEngineMongoDB 的 ORM 库
MongoEngine由Python语言写成,提供一个很类似Django ORM的API 用于访问
MongoEngineMongoDB 的 ORM 库
0
beedbGo的ORM库
Go语言实现的一个数据库ORM库,支持标准的database/sql接口,支持数据库:MySQL、PostgreSQL、DB2、SQLite、ADODB、ODBC。目前这个库使用Gostyle方式来操
beedbGo的ORM库
0
CequelCassandra 的 ORM 库
Cequel是一个Ruby的ORM库,用来访问Cassandra服务器。示例代码:class Blog include Cequel::Record key :subdomain, :text
CequelCassandra 的 ORM 库
0
gdaogolang 的 orm 库
gdao是一个golang的orm库,gdao可以将数据库表映射生成相应的***.go文件(表名.go),之后操作数据库单表就直接操作相应的go文件即可。同时支持原生sql语句。注册数据源:3种方式,
gdaogolang 的 orm 库
0