栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

10-grom-07-删除

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

10-grom-07-删除

文章目录

1. 删除记录2. 批量删除3. 软删除

1. 删除记录
db.Delete(&xiShu{ID: 2})

完整示例

删除id=2 的一行

package main

import (
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)
type xiShu struct {
	ID int64
	Name string
	Age int64
}

func(xiShu) TableName() string {
	return "xi_shu"
}

func main() {

	db,_ := connect()
	defer db.Close()
	result := db.Delete(&xiShu{ID: 2})
	fmt.Println(result.Value)
}

func connect() (db *gorm.DB,err error) {
	db, err = gorm.Open("mysql", "root:40010355@tcp(127.0.0.1:3306)/crow?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		fmt.Printf(err.Error())
		defer db.Close()
	}else {
		fmt.Printf("OKn")
		db.DB().SetMaxIdleConns(10)
		db.DB().SetMaxOpenConns(100)
	}
	return
}
2. 批量删除
db.Where("name LIKE ?", "%Guan%").Delete(&xiShu{})

或写作

db.Delete(xiShu{},"name LIKE ?","%Guan%")

示例
表中原有数据

mysql> select * from xi_shu ;
+----+------------+------+
| id | name       | age  |
+----+------------+------+
|  1 | LiuBei     |   28 |
|  2 | GuanYu     |   22 |
|  3 | ZhangFei   |   20 |
|  4 | ZhaoYun    |   18 |
|  5 | ZhuGeLiang |   20 |
|  6 | GuanPing   |    3 |
+----+------------+------+
6 rows in set (0.00 sec)

代码

上例main函数修改如下:

func main() {
	db,_ := connect()
	defer db.Close()
	result := db.Where("name LIKE ?", "%Guan%").Delete(&xiShu{}).RowsAffected
	fmt.Println(result)
}

表修改后

mysql> select * from xi_shu ;
+----+------------+------+
| id | name       | age  |
+----+------------+------+
|  1 | LiuBei     |   28 |
|  3 | ZhangFei   |   20 |
|  4 | ZhaoYun    |   18 |
|  5 | ZhuGeLiang |   20 |
+----+------------+------+
4 rows in set (0.00 sec)

如上,关家将都被删除

3. 软删除

实际是给deleted_at列加了一个删除时间deleted_at列必须存在,否则直接删除

db.Delete(&xiShu{ID: 2})

示例

package main

import (
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"time"
)
type xiShu struct {
	ID int64
	Name string
	Age int64
	DeletedAt time.Time
}

func(xiShu) TableName() string {
	return "xi_shu"
}


func main() {

	db,_ := connect()
	defer db.Close()
	result := db.Delete(&xiShu{ID: 2}).RowsAffected
	fmt.Println(result)
}

func connect() (db *gorm.DB,err error) {
	db, err = gorm.Open("mysql", "root:40010355@tcp(127.0.0.1:3306)/crow?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		fmt.Printf(err.Error())
		defer db.Close()
	}else {
		fmt.Printf("OKn")
		db.DB().SetMaxIdleConns(10)
		db.DB().SetMaxOpenConns(100)
	}
	return
}

执行后表格

mysql> select * from xi_shu ;
+----+----------+------+---------------------+
| id | name     | age  | deleted_at          |
+----+----------+------+---------------------+
|  1 | LiuBei   |   28 | NULL                |
|  2 | GuanYu   |   22 | 2022-02-10 14:39:56 |
|  3 | ZhangFei |   20 | NULL                |
+----+----------+------+---------------------+
3 rows in set (0.00 sec)

如上可见,第二行没有被真正删除,只是在deleted_at列加了删除的时间

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号