Toyorm

Go 语言实现的 ORM 库
授权协议 MIT
开发语言 Google Go
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 爱琪
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

特性:

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

  2. 条件:支持Limit/Offset/Where/Group by/Order by 

  3. 支持事务

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

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

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

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

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

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

  10. 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)
}
 相关资料
  • 本文向大家介绍C语言单链表的实现,包括了C语言单链表的实现的使用技巧和注意事项,需要的朋友参考一下 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表结构: SList.h SList.cpp Test.cpp 以上内容是小编给大家介绍的C语言单链表的实现代码,希望对大家有所帮助!

  • 本文向大家介绍go语言实现sqrt的方法,包括了go语言实现sqrt的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现sqrt的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 语言是一种规范,要想使用它,需要将其实体化,用编译原理的话讲,可以大致分为编译器和解释器,而根据之前说的,如果把目标代码的解释过程看做解析过程,比如x86机器指令load到cpu时,根据不同的指令进行不同的运算,以及字节码的分派等,这个界限是模糊的 因此,这个事情可以这么讲,假设我们已经有一台机器M,它可以接收A语言并完成计算工作,则对于高级语言B来说,我们只要将其转换成A语言即可。根据实际情况,

  • 问题内容: Windows,Linux(我可以使用的平台)或Mac(因为我知道我并不孤单)上有徽标的任何实现吗?如何获得计算机的徽标编程语言? 问题答案: 我正在使用 Elica LOGO 在Windows上成功教我的孩子 LOGO 。(孩子的年龄目前为12岁和10岁。) 该软件包的优势包括许多“高级”扩展,这些扩展超出了基本的二维乌龟。其中包括3D图形和进入Windows小部件世界的简单钩子。(

  • 本文向大家介绍C语言实现密码本,包括了C语言实现密码本的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现密码本的具体代码,供大家参考,具体内容如下 功能简述: 1.账号登陆(密码验证,三次锁定账号) 2.功能选择:1、查看所有密码 2、新增密码 3、删除密码 4、修改密码 5、查询密码 6、解除锁定 7、退出登陆 3.保存密码,文件加密 4.流程图: 数据定义部分 界面与用户

  • 本文向大家介绍Go语言实现简单留言板的方法,包括了Go语言实现简单留言板的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言实现简单留言板的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍C语言 扫雷程序的实现,包括了C语言 扫雷程序的实现的使用技巧和注意事项,需要的朋友参考一下 C语言 扫雷程序的实现 这个游戏可以实现根据选择坐标后所显示无雷区范围的不同分为简单 ,普通和困难 游戏程序中,实现了游戏的计时(分钟)功能,实现了扫雷游戏的最基础功能。  定义了一个9*9的棋盘,玩家只要根据提示选择游戏,和难度;  根据提示输入 合法的坐标,如输入不合法则会进行提示;  

  • 主要内容:1.数据科学,2.统计计算,3.机器学习R语言在现实中的应用有哪些?主要有以下几种 - 1.数据科学 “哈佛商业评论”将数据科学家命名为“21世纪最性感的工作”。 Glassdoor将其命名为2016年的“年度最佳工作”。随着IoT设备的诞生,创建了可用于做出更好决策的TB级和TB级数据,数据科学是一个没有其他方法可以追溯到的领域。 简单的解释说,数据科学家是一位具有额外资产的统计学家:计算机编程技能。 像R语言这样的编程语言给数据科学