亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang從數據庫中獲取數據的通用方法

Golang從數據庫中獲取數據的通用方法

Go
HUWWW 2021-12-20 10:09:02
我正在嘗試在 Golang 中實現jquery 數據表服務器端處理。其中一部分需要一個通用方法來從數據庫中選擇數據。我已經發布了我在下面所做的事情的簡化版本。package mainimport (    "gopkg.in/gorp.v1"    "database/sql"  _ "github.com/go-sql-driver/mysql")type User struct {    TenantId     int     `db:"tenantid"json:"tenantid"`    Username     string  `db:"username"json:"username"`    Password     string  `json:"password"`}func GenericSelect(database string,  table string, columns []string, result interface{})interface{} {    dbMap := getDBConnection(database);    defer dbMap.Db.Close()    var err error    query := "SELECT "     for index,element := range columns {      query += element      if(index+1 != len(columns)){        query += ","      }    }    query +=  " FROM " + table + " LIMIT 1,100"    _, err = dbMap.Select(&result, query)    if err != nil {        panic(err.Error())  // Just for example purpose.    }  return result}func getDBConnection(dbname string) *gorp.DbMap {    var connectionUrl string    connectionUrl = "root:root@tcp(localhost:3306)/" + dbname    db, err := sql.Open("mysql", connectionUrl)    if err != nil {        panic(err.Error())  // Just for example purpose.    }    dbmap := &gorp.DbMap{Db: db, Dialect:gorp.MySQLDialect{"InnoDB", "UTF8"}}    return dbmap}func main(){        var users []User        columns := []string{"tenantid", "username", "password"}        result := GenericSelect("portal","accounting",columns, &users)        //make result in to a json instead of print        print(result)}一旦我運行它,它會拋出以下錯誤,panic: gorp: Cannot SELECT into this type: *interface {}goroutine 1 [running]:main.GenericSelect(0x6b1c30, 0x6, 0x6bd490, 0xa, 0xc208073f60, 0x3, 0x3, 0x5e8e60, 0xc20801e260, 0x0, ...)    /home/anuruddha/Desktop/go-lang/main.go:30 +0x37f根據錯誤, Select() 不接受接口。在 golang 中是否有可能達到這種程度的通用性?感謝您是否可以指導我完成這項工作?
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

在這種情況下,結果已經是一個指針(users 作為 &users 傳遞),因此您不需要再次獲取它的地址。


替換行:


_, err = dbMap.Select(&result, query)


_, err = dbMap.Select(result, query)


查看完整回答
反對 回復 2021-12-20
  • 1 回答
  • 0 關注
  • 453 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號