gorm v2 support
This commit is contained in:
谢小军
2020-09-24 20:44:15 +08:00
parent a70ab3ff83
commit 33d22fe2d4
10 changed files with 221 additions and 192 deletions

View File

@@ -3,12 +3,12 @@ package genfunc
import (
"fmt"
"testing"
"time"
"github.com/jinzhu/gorm"
"github.com/xxjwxc/gormt/data/view/genfunc/model"
"gorm.io/gorm"
_ "github.com/go-sql-driver/mysql"
"github.com/xxjwxc/public/mysqldb"
"gorm.io/driver/mysql"
)
/**
@@ -16,20 +16,46 @@ import (
*/
func GetGorm(dataSourceName string) *gorm.DB {
db, err := gorm.Open("mysql", dataSourceName)
db, err := gorm.Open(mysql.Open(dataSourceName), &gorm.Config{PrepareStmt: false})
if err != nil {
panic(err)
}
db.LogMode(true)
return db
sqlDB, err := db.DB()
if err != nil {
panic(err)
}
// SetMaxIdleConns 设置空闲连接池中连接的最大数量
sqlDB.SetMaxIdleConns(10)
// SetMaxOpenConns 设置打开数据库连接的最大数量。
sqlDB.SetMaxOpenConns(100)
// SetConnMaxLifetime 设置了连接可复用的最大时间。
sqlDB.SetConnMaxLifetime(time.Hour)
return db.Debug()
}
func NewDB(){
db, _ := gorm.Open(...)
db.Model(&AAA).Where("aaa = ?", 2)
}
func CallFunc(db *gorm.DB){
// select a...
var bbb BBB
db.Table("bbb").Where("bbb = ?", 2).Find()
}
// TestFuncGet 测试条件获(Get/Gets)
func TestFuncGet(t *testing.T) {
model.OpenRelated() // 打开全局预加载 (外键)
db := GetGorm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True")
defer db.Close()
db := GetGorm("root:123456@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True")
defer func() {
sqldb, _ := db.DB()
sqldb.Close()
}()
accountMgr := model.AccountMgr(db.Where("account_id = ?", 2))
account, err := accountMgr.Get() // 单条获取
@@ -45,11 +71,14 @@ func TestFuncGet(t *testing.T) {
// TestFuncOption 功能选项方式获取
func TestFuncOption(t *testing.T) {
// db := GetGorm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True")
// defer db.Close()
orm := mysqldb.OnInitDBOrm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True") // 推荐方式
defer orm.OnDestoryDB()
db := orm.DB
db := GetGorm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True")
defer func() {
sqldb, _ := db.DB()
sqldb.Close()
}()
// orm := mysqldb.OnInitDBOrm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True") // 推荐方式
// defer orm.OnDestoryDB()
// db := orm.DB
accountMgr := model.AccountMgr(db)
accountMgr.SetIsRelated(true) // 打开预加载 (外键)
@@ -65,7 +94,10 @@ func TestFuncOption(t *testing.T) {
// TestFuncFrom 单元素方式获取
func TestFuncFrom(t *testing.T) {
db := GetGorm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True")
defer db.Close()
defer func() {
sqldb, _ := db.DB()
sqldb.Close()
}()
accountMgr := model.AccountMgr(db)
accountMgr.SetIsRelated(true) // 打开预加载 (外键)
@@ -82,7 +114,10 @@ func TestFuncFrom(t *testing.T) {
// TestFuncFetchBy 索引方式获取
func TestFuncFetchBy(t *testing.T) {
db := GetGorm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local&interpolateParams=True")
defer db.Close()
defer func() {
sqldb, _ := db.DB()
sqldb.Close()
}()
accountMgr := model.AccountMgr(db)
accountMgr.SetIsRelated(true) // 打开预加载 (外键)