关于gorm:golang-gorm-使用分享和-redis使用
GORM 官网反对的数据库类型有: MySQL,PostgreSQL,SQlite,SQL ServerMYSQLimport ( "gorm.io/driver/mysql" "gorm.io/gorm") func main() { // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情 dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})}PostgreSQLimport ( "gorm.io/driver/postgres" "gorm.io/gorm") dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})#### SQLiteimport ( "gorm.io/driver/sqlite" // Sqlite driver based on GGO // "github.com/glebarez/sqlite" // Pure go SQLite driver, checkout https://github.com/glebarez/sqlite for details "gorm.io/gorm") // github.com/mattn/go-sqlite3db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{})SQL Serverimport ( "gorm.io/driver/sqlserver" "gorm.io/gorm") // github.com/denisenkom/go-mssqldbdsn := "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm"db, err := gorm.Open(sqlserver.Open(dsn), &gorm.Config{})连接池GORM 应用database/sql保护连接池sqlDB, err := db.DB()// SetMaxIdleConns 设置闲暇连接池中连贯的最大数量sqlDB.SetMaxIdleConns(10)// SetMaxOpenConns 设置关上数据库连贯的最大数量。sqlDB.SetMaxOpenConns(100)// SetConnMaxLifetime 设置了连贯可复用的最大工夫。sqlDB.SetConnMaxLifetime(time.Hour)Createpackage mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "time")type Userinfo struct { Id uint Name string Gender string Hobby string}type UserTest struct { ID uint Name string Email *string Age uint8 Birthday *time.Time MemberNumber sql.NullString ActivatedAt sql.NullTime CreatedAt time.Time UpdatedAt time.Time}func main() { // 连贯数据库 dsn := "root:xixxxxxu@tcp(10.xx.18x.1x:3306)/test?charset=utf8mb4&parseTime=True&loc=Local" db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{}) ////主动迁徙 //db.AutoMigrate(&Userinfo{}) //u1 := Userinfo{Id: 1, Name: "张三", Gender: "男", Hobby: "学习"} //db.Create(&u1) //创立 //create table and inster db.AutoMigrate(&UserTest{}) britime := time.Now() user := UserTest{Name: "Sean", Age: 17, Birthday: &britime} result := db.Create(&user) //user.ID // 返回插入数据的主键 //result.Error // 返回 error //result.RowsAffected // 返回插入记录的条数 fmt.Println(user.ID, result.Error, result.RowsAffected)} ...