你受的苦 吃的亏 担的责 扛的罪 忍的痛 到最后都会变成光 照亮你的路 !!!
代码已放在:https://gitee.com/hjx_RuGuoYunZhiDao/strom-huang-go
可参照文档:https://learnku.com/docs/gorm/v2/create/9732#e9dfd9
1、 引入gorm
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
2、链接数据库
dsn := "root:root@tcp(localhost:3306)/go_test?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: newLogger,
})
4、model
//model:
type TUser struct {
ID uint `gorm:"primaryKey"` //表示主键
Name string
Password string
Phone string `gorm:"phone"`
NickName string `gorm:"nick_name"`
CreatedAt time.Time `gorm:"column:created_at;type:datetime"`
UpdatedAt time.Time `gorm:"column:updated_at;type:datetime"`
DeletedAt gorm.DeletedAt //表示软删除的标识
}
//指定数据库表名称
func (TUser) TableName() string {
return "t_user"
}
5、具体代码
package main
import (
"fmt"
"log"
"os"
model "strom-huang-go/go_mysql/model"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
func main() {
//启用打印日志
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // 慢 SQL 阈值
LogLevel: logger.Info, // Log level: Silent、Error、Warn、Info
Colorful: false, // 禁用彩色打印
},
)
dsn := "root:root@tcp(localhost:3306)/go_admin?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: newLogger,
})
if err != nil {
fmt.Println(err)
return
}
//删除一条 DELETE FROM `t_user` WHERE `t_user`.`id` = 3
db.Delete(&model.TUser{ID: 3})
//带额外参数 DELETE FROM `t_user` WHERE name = 'jinzhu' AND `t_user`.`id` = 3
db.Where("name = ?", "jinzhu").Delete(&model.TUser{ID: 3})
// 根据主键删除 DELETE FROM `t_user` WHERE `t_user`.`id` = 3
db.Delete(&model.TUser{}, 3)
//多个删除:相当于In : DELETE FROM `t_user` WHERE `t_user`.`id` IN (3,4,5)
db.Delete(&model.TUser{}, []int{3, 4, 5})
//批量删除 : DELETE FROM `t_user` WHERE nick_name like
db.Delete(&model.TUser{}, "nick_name like ?", "%6666%")
// 和上面一个意思 DELETE FROM `t_user` WHERE phone like '%00000%'
db.Where("phone like ?", "%00000%").Delete(&model.TUser{})
//-------------------------------------软删除------------------------------------------------
//软删除有点特殊,如果你的model里面有delete_at或者其他标识符号,可以在上面加上:gorm.deletedat 来表述
//如果没有的话,可以用修改的方法:
//UPDATE `t_user` SET `deleted_at`='2022-05-13 11:51:48.981' WHERE `t_user`.`id` = 3 AND `t_user`.`deleted_at` IS NULL
db.Delete(&model.TUser{ID: 3})
// 批量删除 UPDATE `t_user` SET `deleted_at`='2022-05-13 11:53:51.055' WHERE name = 20 AND `t_user`.`deleted_at` IS NULL
db.Where("name = ?", 20).Delete(&model.TUser{})
// 在查询时会忽略被软删除的记录 SELECT * FROM `t_user` WHERE age = 20 AND `t_user`.`deleted_at` IS NULL
db.Where("age = 20").Find(&model.TUser{})
}