go : 使用 grom 删除数据库数据

你受的苦 吃的亏 担的责 扛的罪 忍的痛 到最后都会变成光 照亮你的路 !!!
代码已放在: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{})
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行人已

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值