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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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")
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
82 2
|
25天前
|
SQL NoSQL 关系型数据库
数据库学习
【10月更文挑战第8天】
19 1
|
29天前
|
数据可视化 API PHP
学生信息管理系统-可视化-科目管理CRUD代码生成器
学生信息管理系统-可视化-科目管理CRUD代码生成器
34 5
|
25天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
55 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
26天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
44 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
26天前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
19 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
2月前
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
|
2月前
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
|
27天前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
55 0
|
29天前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
17 0