🎆

数据库操作

更多功能开发中...

实例配置

import( "github.com/zlsgo/zdb" // 根据实际情况引入对应配置包 "github.com/zlsgo/zdb/driver/sqlite3" // "github.com/zlsgo/zdb/driver/mssql" // "github.com/zlsgo/zdb/driver/mysql" // "github.com/zlsgo/zdb/driver/postgres" ) func main() { // 数据库配置 config := &sqlite3.Config{ File: "./test.db", } // 打印执行语句 zdb.Debug.Store(true) // 初始化数据库实例 db, err := zdb.New(config) }
 

基础用法

执行/查询

// 执行 res,err := db.Exec(query string, args ...interface{}) // 查询 rows,err := db.Query(query string, args ...interface{}) // 关闭,如果有 Scan 操作关闭是非必要的 defer rows.Close() // 查询结果集绑定结构体 var user User{ ID string `zdb:"id"` // 因为是直接大驼峰转下横线的,这里声明下对应数据库的 id 字段 Name string // 如果不声明那么 Name 表示对应数据库的 name 字段 } count, err := zdb.Scan(rows,&user) // 查询结果集转 map data, count, err := zdb.ScanToMaps(rows)

事务

// 开始事务 err := db.Transaction(func(db *zdb.Engine) error { // code ... // db.Exec(...) // 返回 err 则会自动回滚 return nil })

集群

// 多数据库(读写分离) // 第一个数据库配置为主(写)库,其他的则为从库 db, err := zdb.NewCluster([]zdb.IfeConfig{config1, config2 ,config3}) // 自动根据读、写选择对应数据库 // db.Exec(...) // db.Query(...) // 强制使用主库 err := db.Source(func(db *zdb.Engine) error { // code ... // db.Exec(...) return nil }) // 强制使用从库 err := db.Replica(func(db *zdb.Engine) error { // code ... // db.Exec(...) return nil })
 

ORM

查询单条数据

row,err := db.FindOne("table",func(b *builder.SelectBuilder) error { // 查询条件 b.Where(b.Cond.GE("id", 1)) // OR // b.Where("id = ?", 1) return nil })

查询多条数据

rows,err := db.Find("table",func(b *builder.SelectBuilder) error { // 查询条件 b.Where(b.Cond.GE("id", 1)) return nil })