Toyorm Go 语言实现的 ORM 库开源项目

我要开发同款
匿名用户2018年03月21日
57阅读
开发技术GO语言
所属分类Google Go、ORM/持久层框架、程序开发
授权协议MIT

作品详情

使用go实现的orm库,用go的结构体与数据库表关联,来简化各种数据库操作。

特性:

语句与查询:支持Insert/Replace/Find/Delete/Update等操作

条件:支持Limit/Offset/Where/Groupby/Orderby 

支持事务

预加载:基于表主键的关联查询支持BelongTo/OneToOne/OneToMany/ManyToMany4种模式

预加载条件:操作预加载的表和操作基本表一样

预加载查询聚合:对于预加载字段会优化成Whereidin[...]的查询,一个预加载字段永远只占一个Select

Result:生成数据库语句报告和语句导致的错误,支持预加载模式

上下文结构,可以在数据库语句逻辑中插入自定义逻辑

Collection:多数据库操作,该模式下的数据必须拥有主键,auto_increment模式失效

toy-doctor(检查FieldSelection参数错误)

支持mysql,sqlite3

go版本>1.9

安装

go get github.com/bigpigeon/toyorm

快速开始

package mainimport ("github.com/bigpigeon/toyorm"_ "github.com/mattn/go-sqlite3". "unsafe")type Product struct {toyorm.ModelDefaultName  stringPrice 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 ToyBrickbrick := 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)}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论