var jsondata map[string]inte***ce{}//全域性變數:存放配置檔案的map物件
func initjson()
configstr := string(bytes[:])
reg := regexp.mustcompile(`/\*.*\*/`)
configstr = reg.replaceallstring(configstr, "")
bytes = byte(configstr)
if err := json.unmarshal(bytes, &jsondata); err != nil
fmt.println("success to ",jsondata["database"])
}type dbconfig struct
// 1.dbconfig 資料庫相關配置
var dbconfig dbconfig
func initdb() ))//將database json物件賦值給dbconfig結構體
portstr := fmt.sprintf("%d", dbconfig.port)
url := ":@tcp(:)/?charset=&parsetime=true&loc=local"//定義乙個url
url = strings.replace(url, "", dbconfig.database, -1)//n<0替換所有匹配的,將dbconfig中的物件替換帶該url中
url = strings.replace(url, "", dbconfig.user, -1)
url = strings.replace(url, "", dbconfig.password, -1)
url = strings.replace(url, "", dbconfig.host, -1)
url = strings.replace(url, "", portstr, -1)
url = strings.replace(url, "", dbconfig.charset, -1)
fmt.println(url)
dbconfig.url = url//再將url返回進該配置檔案
}func init()
func init()
if config.dbconfig.sqllog
db.db().setmaxidleconns(config.dbconfig.maxidleconns)
db.db().setmaxopenconns(config.dbconfig.maxopenconns)
model.db=db
}
3 . 簡單查詢
func main()
可以在具體的controller層或者service層進行查詢操作
也可以將dao層操作封裝到具體方法內
func get(id uint) cart
然後在main中呼叫
func main() //可以封裝成查詢cond物件
get := model.get(7)
fmt.println("openid=",cart.openid)
}
但是這樣有個問題,由於go中沒有物件調方法的概念,這裡不存在dao物件,無法顯性的表示是哪個dao執行get方法,而是直接通過包名(model)+公開方法(get),所有貌似封裝也沒什麼意義 go 語言 gorm 增刪改查
使用 orm 工具,通常少許鹽在 中定義模型 models 與資料庫中的資料表進行對映,在 ormb 中模型 models 通常是正常的結構體 基本的 go 型別或他們的指標,同時也支援 sql.scanner 與 driver.valuer 介面 inte ces 為了方便模型,gorm 內建乙個...
go使用gorm訪問資料庫
drivertype 資料庫驅動 type drivertype int const mysql drivertype iota 0 mssql 1 oracle 2 sqllite 3 postgresql 4 func d drivertype string string dbconfig 資料...
gorm快速使用
模型 為表中的字段,記得欄位名開頭大寫 type patient struct 此例為postgresql func main 不重新建立複數結尾的表,還是原來的表,可以利用原表中的結構,資料 db.singulartable true defer db.close 建立 patient db.cr...