一.项目实践
书接上文,我们已经将项目的结构构建好了,接下来我们开始实践
1.使用方式
在使用gorm框架时,我们分三步进行
1.引入gorm包
import "github.com/jinzhu/gorm"
2.导入数据库的驱动
import _ "github.com/go-sql-driver/mysql"
为了方便记住导入路径,GORM包装了一些驱动:
import _ "github.com/jinzhu/gorm/dialects/mysql"
// import _ "github.com/jinzhu/gorm/dialects/postgres"
// import _ "github.com/jinzhu/gorm/dialects/sqlite"
// import _ "github.com/jinzhu/gorm/dialects/mssql"
根据自己选用的数据库来选择
可以使用以下两种形式来使用mysql:
1、
import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" )
2、
import ( "github.com/jinzhu/gorm" _ "github.com/go-sql-driver/mysql" )
3.连接数据库
1、 最简单形式 func main() { db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local") defer db.Close() }
2、 公司形式 func initDB(info config.MysqlInfo) *gorm.DB { db, err := gorm.Open("mysql", info.DSN) if err != nil { panic(err) } db.SetLogger(gormlog.NewLogger()) db.LogMode(true) db.DB().SetMaxOpenConns(info.MaxOpen) db.DB().SetMaxIdleConns(info.MaxIdle) db.DB().SetConnMaxLifetime(time.Second * 300) if err = db.DB().Ping(); err != nil { panic(err) } return db }
2.查询操作
(1).简单查询
(2).select查询
指定要从数据库检索需要的字段,默认情况下,将选择所有的字段
(3).where查询
3.修改操作
使用save将更新所有字段,即使它没有改变
`db.First(&user); user.Name="jinzhu"; user.Age=18; db.Save(&user);
UPDATE users SET name='jinzhu', age=18, birthday='2016-01-01', updated_at = '2013-11-17 21:34:10' WHERE id=111; `
4.删除操作
删除记录时,需要确保其主要字段具有值,GORM将使用主键删除记录,如果主要字段为空,GORM将删除模型的所有记录
`// 删除存在的记录 db.Delete(&email); delete from email where id=10;
// 为Delete语句添加额外的SQL选项 db.Set("gorm:delete_option", "OPTION (OPTIMIZE FOR UNKNOWN)").Delete(&email); DELETE from emails where id=10 OPTION (OPTIMIZE FOR UNKNOWN);
`