GoooQo v0.2.3
首页仓库演示
简体中文
简体中文
  • GoooQo介绍
  • 快速上手
  • 接口使用
    • 数据库连接
    • 事务
    • 增删查改接口
  • 实体映射
    • 实体对象
    • 关联实体
  • 查询条件构建
    • 查询对象定义
      • 谓词后缀字段
      • 逻辑后缀字段
      • 子查询字段
      • ER关系字段
      • 自定义字段
    • 分页排序对象
  • 聚合查询
    • 视图对象
    • 聚合查询对象
    • 自然连接
    • 外连接
  • 高级用法
    • 数据库方言
    • 锁
  • 相关资源
    • 文章
      • 从ORM到OQM:一种基于对象的SQL语句构造方案
      • 在GoooQo中如何表示`select * from user where id = ? or name = ? and age = ?`
由 GitBook 提供支持
在本页
  • 初始化项目
  • 创建数据访问接口
  • 相关文档

这有帮助吗?

在GitHub上编辑

快速上手

初始化项目

首先,使用go mod init初始化项目并添加GoooQo依赖:

go get -u github.com/doytowin/goooqo

然后,初始化数据库连接和事务管理器:

package main

import (
	"database/sql"
	"github.com/doytowin/goooqo/rdb"
	_ "github.com/mattn/go-sqlite3"
)

func main() {
	db, _ := sql.Open("sqlite3", "./test.db")

	tm := rdb.NewTransactionManager(db)

	//...
}

创建数据访问接口

假设我们在test.db中有以下用户表:

id
name
score
memo

1

Alley

80

Good

2

Dave

75

Well

3

Bob

60

4

Tim

92

Great

5

Emy

100

Great

我们为表定义一个实体对象和一个查询对象:

user.go
package main

import (
	. "github.com/doytowin/goooqo"
)

type UserEntity struct {
	Int64Id
	Name  *string `json:"name"`
	Score *int    `json:"score"`
	Memo  *string `json:"memo"`
}

func (u UserEntity) GetTableName() string {
	return "t_user"
}

type UserQuery struct {
	PageQuery
	ScoreLt   *int
	MemoStart *string
	// ...
}

实体对象的字段与表的列相对应,查询对象的字段根据需要构建的查询条件来定义。

然后我们定义一个userDataAccess来执行增删查改操作:

userDataAccess := rdb.NewTxDataAccess[UserEntity](tm)

userQuery := UserQuery{PageQuery: PageQuery{PageSize: P(10)}, ScoreLt: P(80)}
userEntities, err := userDataAccess.Query(ctx, userQuery)

这将生成并执行以下SQL语句:

SELECT id, name, score, memo FROM t_user WHERE score < ? LIMIT 10 OFFSET 0

相关文档

有关如何构建查询对象,请查看:

有关DataAccess接口的更多详细信息,请查看:

上一页GoooQo介绍下一页数据库连接

最后更新于8个月前

这有帮助吗?

查询对象定义
增删查改接口