CRUD
- Create(创建) :创建新的数据条目。Create()函数
- Read(读取) :读取现有的数据条目。Find()获取全部,First()获取一行
- Update(更新) :更新现有的数据条目。Update()函数
- Delete(删除) :删除现有的数据条目。Delete()函数
gorm与数据库的交互过程通过DSN字符串绑定mysql的IP地址 端口以及数据库用户名和密码。
- 利用Open函数创建数据库连接db。
- db.AutoMigrate(&Company{}) 会自动创建对应函数的表
- db.Where子句作为条件,等价于sql的where
- 之后通过Delete()、Create()、这些函数中的参数是对应数据库模型的类型名,对应数据库中的表名。
仔细观察不难发现,gorm的操作与sql语句恰好是相反的。也就是where order from tables
select * from tablename where field = "xxx"
关联关系等内容会放到下一篇进行介绍,尽情期待。
案例
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Company struct {
ID int
CompanyName string `json:"company_name"`
Content string `json:"content"`
Platform string `json:"platform"`
}
func main() {
// 连接数据库
dsn := "root:123456@tcp(127.0.0.1:3306)/testDB?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database.")
}
db.AutoMigrate(&Company{})
// 创建用户
company := Company{CompanyName: "深圳腾讯计算机技术有限公司", Content: "测试内容", Platform: "测试平台"}
result := db.Create(&company)
if result.Error != nil {
panic("failed to create user")
}
// fieldName := "company_name" // 在此处替换字段名和字段值
// fieldValue := "深圳腾讯计算机技术有限公司"
// result = db.Where(fieldName+" = ?", fieldValue).Delete(&Company{}) // // 删除匹配条件的行数据
// if result.Error != nil {
// panic("failed to delete rows")
// }
// 打印受影响的行数
println(result.RowsAffected)
}