快速上手

初始化项目

首先,使用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中有以下用户表:

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

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接口的更多详细信息,请查看:

最后更新于