Beego学习——orm实现简单的crud

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: Beego学习——orm实现简单的crud

package main
import (
  "fmt"
  "github.com/astaxie/beego/logs"
  "github.com/astaxie/beego/orm"
  _ "github.com/go-sql-driver/mysql"
)
// Model Struct
type User0 struct {
  Id   int    // beego 默认设置id为主键,自动递增
  Name string `orm:"size(100)"`
}
func init() {
  // 1. 数据库注册
  //  第一个参数是driverName,第二个参数是orm的类型对于三种数据库
  _ = orm.RegisterDriver("mysql", orm.DRMySQL)
  // 2. 数据库连接
  //  beego必须注册一个别名为default的数据库,作为默认使用。
  //  第一个参数是数据库的别名,用来切换数据库使用。
  //  第二个是driverName,在RegisterDriver时注册的
  //  第三是数据库连接字符串:
  //  name:pwd@tcp(localhost:3306)/databaseName?charset=utf8
  //  相对于用户名:密码@数据库地址+名称?字符集
  //  第四个参数相当于: orm.SetMaxIdleConns("default", 30) 设置数据库的最大空闲连接。
  //  第五个参数相当于:orm.SetMaxOpenConns("default", 30) 设置数据库的最大数据库连接。
  _ = orm.RegisterDataBase("default", "mysql", "root:020826@tcp(localhost:3306)/beegostudy?charset=utf8", 30)
  // 注册模型
  // 如果使用 orm.QuerySeter 进行高级查询的话,这个是必须的。
  // 反之,如果只使用 Raw 查询和 map struct,是无需这一步的。
  orm.RegisterModel(new(User0))
  // 通过函数名,我们就可以大概猜到它的用途同步数据库, 它可以帮我们同步表的数据。
  //  参数一 数据库别名,一般为default;
  //  参数二 为ture时自动帮我们创建表。(注意:如果设置为true,且表本身存在且有值的时候,会覆盖你的表)
  //  参数三 是否更新表
  _ = orm.RunSyncdb("default", false, true)
}
func InsertUser(name string) {
  //拿到句柄,操作数据库
  o := orm.NewOrm()
  user := User0{Name: "test"}
  id, err := o.Insert(&user)
  fmt.Printf("ID: %d, ERR: %v\n", id, err)
}
func UpdateUser(id int) {
  //拿到句柄,操作数据库
  o := orm.NewOrm()
  user := User0{}
  user.Id = id
  // 查询的更新对象
  err := o.Read(&user)
  // 给对象从新赋值
  if err == nil {
    user.Name = "222"
    //更新数据库
    num, err := o.Update(&user)
    if err != nil {
      logs.Info("更新失败!")
      return
    }
    fmt.Printf("NUM: %d, ERR: %v\n", num, err)
  } else {
    logs.Info("未找到该用户!")
    return
  }
}
func SelectUserById(id int) {
  o := orm.NewOrm()
  user := User0{}
  user.Id = id
  err := o.Read(&user, "id")
  if err != nil {
    logs.Info("查询失败!")
    return
  }
  logs.Info("查询成功", user)
}
func SelectUserByName(name string) *User0 {
  //拿到句柄,操作数据库
  o := orm.NewOrm()
  user := User0{}
  /*
    1. orm的read函数默认是用主键进行查询的,
    2. Read 默认通过查询主键赋值,也可以使用指定的字段进行查询。
    第一个参数是已经用所要查询字段的值初始化过后的对象
    第二个参数指定查询的字段,(注意是查询的字段不是查询字段的值,
    因此在指定一个查询字段时,新建一个model对象之后仍然要用所要查询字段的值初始化所要查询的字段)
  */
  // 查询的字段值
  user.Name = name
  err := o.Read(&user, "name")
  if err != nil {
    logs.Info("查询失败", err)
    return nil
  } else {
    logs.Info("查询成功", user)
    return &user
  }
}
func DeleteUserByName(name string) bool {
  o := orm.NewOrm()
  // 调用查询方法 返回*User类型
  u := SelectUserByName(name)
  if u != nil {
    _, err := o.Delete(u)
    if err != nil {
      logs.Info("删除失败", err)
      return false
    }
    logs.Info("删除成功!")
    return true
  }
  logs.Info("删除失败,未找到该用户")
  return false
}
func main() {
  // insert
  //InsertUser("test")
  // update
  //UpdateUser(1)
  // select
  //SelectUserById(2)
  //SelectUserByName("222")
  // delete
  //DeleteUserByName("222")
}
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
223 2
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
552 15
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
|
数据可视化 API PHP
学生信息管理系统-可视化-科目管理CRUD代码生成器
学生信息管理系统-可视化-科目管理CRUD代码生成器
236 5
|
SQL NoSQL 关系型数据库
数据库学习
【10月更文挑战第8天】
215 1
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
712 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
2923 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
1176 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD