go语言 使用gorm对数据库进行增删改查操作

创建gorm连接

	// 修改默认属性 表名不加s
    gormConfig := &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			SingularTable: true,
		},
	}

    // 创建gorm连接
	gormDB, err := gorm.Open(mysql.Open("root:aaaa@tcp(localhost:3306)/test?charset=utf8&parseTime=True&loc=Local"), gromConfig)
	if err != nil {
		log.Print("数据库连接失败", err)
	}

坑: gormConfig的作用后面讲

创建结构体

    type User struct {
	    User_id string `gorm:"type:varchar(50);primaryKey"`
	    Name    string `gorm:"type:varchar(20)"`
	    Phone   string `gorm:"type:varchar(20)"`
	    Address string `gorm:"type:varchar(100)"`
	    Sex     string `gorm:"type:varchar(10)"`
	    Age     int    `gorm:"type:int(11)"`
    }

生成随机id

// 生成随机id
func AddRandoms() string {
	id := uuid.NewV4()
	ids := id.String()
	return ids
}

新增


    err := gorm.Table("user").AutoMigrate(&User{})
	if err != nil {
		log.Print("数据库与结构体映射失败", err)
	}

	userData := &User{
		User_id: AddRandoms(),
		Name:    "廷益",
		Phone:   "16666666666",
		Address: "北京北京",
		Sex:     "男",
		Age:     19,
	}

	result := gorm.Create(userData)
	if result.Error != nil {
		log.Print("新建数据失败", result.Error)
	}

首先gorm.Table("user") 这里的user为提前创建好的表名 前面提到的gormConfig的作用: gorm在读取表名的时候会默认给表名后面加上一个s 需要手动设置取消这个s 就比如现在的user 如果不手动设置取消加s的话 执行这段代码他就会根据结构体 创建一个users表 

结果: 

修改

    var user User    
    user.User_id = "59b50a0b-9093-4ff5-afa8-248b21422704"
    result := gorm.Model(user).Update("name", "余华是个大帅哥").Where("user_id=?", user)
	if result.Error != nil {
		log.Print("数据修改失败", result.Error)
	}

这里要注意的就是gorm.Moel(user)中的user为结构体user的一个实例对象  可以是没有值的 在这的作用仅仅只是通过这个对象找到结构体 再通过结构体映射找到表名还有表机构 但是在Where中  仍然需要以该结构体创建对象并且需要将满足条件的值赋值给该对象 用sql语句表现为

UPDATE user SET name="余华是个大帅哥" WHERE user_id="a3346911-1c19-4780-8e8a-b837d2d7dc92"

结果:

查询单个对象

    var data *User
    result := gorm.Find(&data).Where("user_id=?", "a3346911-1c19-4780-8e8a-b837d2d7dc92")
	if result.Error != nil {
		log.Print("获取失败", result.Error)
	}

    // 结果输出
    log.Print(data)

查询多个对象

    var userList []*User
	result := gorm.Limit(10).Offset(0).Find(&userList)
	if result.Error != nil {
		log.Print("获取数据错误", result.Error)
	}

删除

    var user User
    user.User_id = "a3346911-1c19-4780-8e8a-b837d2d7dc92"
    
    result := gorm.Delete(user)
    if result.Error != nil {
        log.Print("删除失败", result.Error)
    }

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值