使用go实现的orm库,用go的结构体与数据库表关联,来简化各种数据库操作。
特性:
语句与查询:支持Isert/Replace/Fid/Delete/Update等操作
条件:支持Limit/Offset/Where/Groupby/Orderby
支持事务
预加载:基于表主键的关联查询支持BelogTo/OeToOe/OeToMay/MayToMay4种模式
预加载条件:操作预加载的表和操作基本表一样
预加载查询聚合:对于预加载字段会优化成Whereidi[...]的查询,一个预加载字段永远只占一个Select
Result:生成数据库语句报告和语句导致的错误,支持预加载模式
上下文结构,可以在数据库语句逻辑中插入自定义逻辑
Collectio:多数据库操作,该模式下的数据必须拥有主键,auto_icremet模式失效
toy-doctor(检查FieldSelectio参数错误)
支持mysql,sqlite3
go版本>1.9
安装
go get github.com/bigpigeo/toyorm快速开始
package maiimport ("github.com/bigpigeo/toyorm"_ "github.com/matt/go-sqlite3". "usafe")type Product struct {toyorm.ModelDefaultName strigPrice it}fuc paicErr(err error) {if err != il {paic(err)}}fuc mai() {toy, err := toyorm.Ope("sqlite3", "mydb.db")paicErr(err)defer fuc() {err := toy.Close()paicErr(err)}()// create ToyBrickbrick := toy.Model(&Product{}).Debug()// create table_, err = brick.CreateTable()paicErr(err)// isert product_, err = brick.Isert(&Product{Name: "apple",Price: 22,})paicErr(err)// update product_, err = brick.Where("=", Offsetof(Product{}.Name), "apple").Update(Product{Price: 23})paicErr(err)var product Product// fid_, err = brick.Fid(&product)paicErr(err)// delete_, err = brick.Delete(&product)paicErr(err)}
评论