gorm软删除_gorm的简单使用和注意事项

Gorm当前支持MySql, PostgreSql, Sqlite等主流数据库

1.安装

首先安装数据库驱动go get github.com/go-sql-driver/mysql 然后安装gorm包go get github.com/jinzhu/gorm

2.使用小示例

package main

import (

"fmt"

"github.com/jinzhu/gorm"

_ "github.com/jinzhu/gorm/dialects/mysql" // 包装

)

type User struct {

Id int64

UserId int64

AddId int64

Name string

Address string

}

type Address struct {

Id int64

UserId int64

AddId int64

AddName string

AddLocation string

}

func main() {

db, err := gorm.Open("mysql", "root:123456@/guolianlc?charset=utf8&parseTime=True&loc=Local")

if err != nil {

fmt.Println("connect db error: ", err)

}

defer db.Close()

if db.HasTable(&User{}) {

db.AutoMigrate(&User{})

} else {

db.CreateTable(&User{})

}

//db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&Address{})

db.AutoMigrate(&Address{})

db.Model(&User{}).AddForeignKey("add_id", "addresses(id)", "RESTRICT", "RESTRICT")

db.Model(&User{}).AddForeignKey("add_id", "addresses(id)", "RESTRICT", "RESTRICT")

db.Model(&User{}).AddIndex("idx_user_add_id", "add_id")

db.Model(&User{}).AddUniqueIndex("idx_user_id", "user_id")

}

复制代码

3.表级别操作

AutoMigrate() db.AutoMigrate(&Address{}) AutoMigrate()运行后,会自动migrate对应的model.仅仅新增新增的字段,不会进行修改已有的字段类型,删除字段的操作

HasTable() 检查表是否存在

CreateTable() db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&Address{}) 创建表 默认情况下,表名为结构体名的复数形式,当然也可以禁用; db.SingularTable(true)

DropTable()/ DropTableIfExists() 删除表

ModifyColumn() 修改列

DropColumn() 删除列

AddForeignKey() 参数 : 1th:外键字段,2th:外键表(字段),3th:ONDELETE,4th:ONUPDATE db.Model(&User{}).AddForeignKey("add_id", "addresses(id)", "RESTRICT", "RESTRICT") 两个表中的字段都必须存在,就像Users表中的add_id字段,如果不存在,无法自动新增字段,并自动创建外键

AddIndex() / AddUniqueIndex 添加索引,添加唯一值索引

db.Model(&User{}).AddForeignKey("add_id", "addresses(id)", "RESTRICT", "RESTRICT")

db.Model(&User{}).AddIndex("idx_user_add_id", "add_id")

db.Model(&User{}).AddUniqueIndex("idx_user_id", "user_id")

复制代码

RemoveIndex() 删除索引

示例中最终创建出的表结构:

CREATE TABLE `users` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`user_id` bigint(20) DEFAULT NULL,

`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`address` varchar(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值