gorm-删除
第一件事都是先连接数据库
package main
import (
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var db *gorm.DB
func init() {
dsn := "root:123456@tcp(127.0.0.1:3306)/golang_test?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db = d
}
type User struct {
gorm.Model
Name string
Age int
Birthday time.Time
Active bool
}
func CreateTables() {
db.AutoMigrate(&User{})
}
var user User
var users []User
// 插入一条数据
func insert() {
user := User{
Name: "krien",
Age: 15,
Birthday: time.Now(),
Active: false,
}
db.Create(&user)
}
这里的删除都是软删除,soft delete,不会真正删除数据,但是会有一条delete_at 的记录
func delete() {
db.First(&user)
db.Delete(&user) //soft delete
}
条件删除
func delete2() {
db.Where("name = ?", "cake").Delete(&user)
}
根据主键删除
// 根据主键删除
func delete3() {
db.Delete(&User{}, 10)
// delete from users where id = 10;
db.Delete(&User{}, "10")
// delete from users where id = 10;
db.Delete(&users, []int{1, 2, 3})
// delete from users where id in (1,2,3);
}
查找软删除记录
db.Unscoped().Where("age = 20").Find(&users)
Delete permanently 真正意义上实现删除
db.Unscoped().Delete(&order)