- 授权协议: MIT
- 开发语言: Google Go
- 操作系统: 跨平台
- 软件首页: https://gitee.com/bigpigeon/toyorm
- 软件文档: https://bigpigeon.org/toyorm/cn/
软件介绍
使用 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)
}
x86/x64体系探索及编程
邓志 / 电子工业出版社 / 2012-10-1 / 119.00元
本书是对Intel手册所述处理器架构的探索和论证。全书共五大部分,从多个方面对处理器架构相关的知识进行了梳理介绍。书中每个章节都有相应的测试实验,所运行的实验例子都可以在真实的机器上执行。 通过阅读本书,读者应能培养自己动手实验的能力。如果再有一些OS方面的相关知识,基本上就可以写出自己简易的OS核心。 本书适合有一定的x86基础知识,且对了解处理器架构及编程感兴趣的读者阅读。一起来看看 《x86/x64体系探索及编程》 这本书的介绍吧!
