• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

red: GO语言的ORM,只支持postgresql数据库

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

red

开源软件地址:

https://gitee.com/bianweiall/red

开源软件介绍:

RED

RED是一个GO语言的ORM,参考了beedb,主要是用来学习GO语言的,只支持postgresql数据库,支持Create,Update,Delete,Find这几个方法。

可以自定义SQL语句中的SELECT / (WHERE OR AND) / ORDER BY / LIMIT OFFSET / RETURNING语句。

安装:

go get github.com/bianweiall/red

用法:数据库表和字段一律"_" + 英文字母小写定义结构,对应数据库表结构(例如:User=>_user, Id=>_id, Name=>_name, Time=>_time, Age=>_age)

type User struct {    Id   int `pk:auto` \\`pk:auto`表示是自动递增主键`pk`为一般主键    Name string	Time string `dt`   \\`dt`表示postgresql中的日期时间类型"current_timestamp"	Age  int}

取得Orm

err, orm := red.New()
func main() {    var user User	err, orm := red.New()	if err != nil {		panic(err)	}	err = orm.Where("_id=?", 1).Find(&user)	if err != nil {		panic(err)	}}

保存,不用给定自增Id和Time,数据库会自动插入,如果设置了Returning则返回err和map,如果没设置Returning则返回err和nil

var user Useruser.Name="小明"user.Age=12err, r := orm.Create(&user)

保存,并返回刚插入的这条记录的Id和Name

var user Useruser.Name="小明"user.Age=12err, strs := orm.Returning("_id", "_name").Create(&user)

更新,默认更新所有字段(自增主键除外)

var user Useruser.Name="鸭蛋"user.Age=50err := orm.Where("_id = ?", 1).Update(&user)

更新指定字段

var user Useruser.Name="鸭蛋"user.Age=50err := orm.Set("_time", "_name", "_age").Where("_id = ?", 1).Update(&user)

删除一个User

var user Usererr = orm.Where("_id = ?", 1).Delete(&user)

查询一个User,不设置select默认取得所有字段

var user Usererr := orm.Select("_name", "_age").Where("_id = ?", 1).Find(&user)

查询User集合,不设置select默认取得所有字段

var users []Usererr := orm.Where("_id > ? and _name like ?", 1, "%关键字%").Find(&user)

一以下方法传递进来的参数中数据库字段的格式:"" + 英文字母小写不设置默认是:"" + 对象英文字母小写,例如:"_user"func (orm *Orm) SetTableName(tableName string) *Orm

orm := orm.SetTableName("_book")

设置选择的字段,不设置默认为选择全部字段func (orm *Orm) Select(strs ...string) *Orm

orm := orm.Select("_id","_name")

UPDATE语句的SET后面跟着的表达式,不设置默认为全部字段都提交(自增主键除外)func (orm *Orm) Set(strs ...string) *Orm

orm := orm.Set("_age","_name")

WHERE语句后面跟着的表达式func (orm *Orm) Where(str string, strValue ...interface{}) *Orm

orm := orm.Where("_id > ? and _name like ?", 1, "%关键字%")

LIMIT和OFFSET,参数为大于0的整数func (orm *Orm) Limit(limit int) *Ormfunc (orm *Orm) Offset(offset int) *Orm

err = orm.Where("_id > ?", 1).Limit(10).Offset(5)

ORDER BYfunc (orm *Orm) OrderBy(orderByStrs ...string) *Orm

err := orm.Where("_id > ?", 1).OrderBy("_id desc","_age asc").Find(&users)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap