orm含义

object relaction mapping
数据表/数据表的操作 <=> 面向对象
类,对象,方法
结构体 结构体的实例 结构体的方法

表的定义(通过列定义)<=>结构体(通过属性定义)
数据 <=> 实例
对数据的操作 <=> 方法

通过定义结构体 自动生成(工具)表
通过对结构体实例的方法调用 对表进行操作

ORM框架(不是万能的,一些复杂的sql,或对性能较高的sql还是需要原生sql来操作)

beego/orm

数据库 => 配置类信息
操作 => orm包内提供的接口(函数,方法)
表对应的结构体

示例

  1. package main
  2. import (
  3. _ "github.com/go-sql-driver/mysql"
  4. "github.com/astaxie/beego/orm"
  5. "log"
  6. )
  7. type User struct { //
  8. Id int64 `orm:"column(uid);pk;auto"`
  9. Name string `orm:"size(64);"`
  10. Password string `orm:"size(1024);"`
  11. Tel string `orm:"size(32);"`
  12. Addr string `orm:"type(text)"`
  13. Birthday *time.Time `orm:"type(date)"`
  14. CreatedAt *time.Time `orm:"auto_now_add"`
  15. UpdatedAt *time.Time `orm:"auto_now"`
  16. DeletedAt *time.Time `orm:"null"`
  17. }
  18. func main(){
  19. dsn :="mysql:mysql@2020@tcp(10.0.0.2:3306)/user?parseTime=true"
  20. // 1、导入驱动(初始化)
  21. // 2、导入orm包
  22. // 3、在orm包中注册驱动(mysql)
  23. orm.RegisterDriver("mysql",orm.DRMySQL) //可省略
  24. // 4、注册数据库(数据库的配置信息)
  25. if err:=orm.RegisterDataBase("default","mysql",dsn);err!=nil{
  26. log.Fatal(err)
  27. }
  28. // 5、注册模型(表对应的结构体)
  29. orm.RegisterModel(&User{}) // 指针类型的实例
  30. // 6、可以进行操作了
  31. //DDL
  32. orm.RunSyncdb() //同步数据库,检查struct 与数据库表是否存在,如果不存在就会创建对应的表;若表存在,检查属性列是否再表中存在,如果不存在,就会添加列;检查索引是否存在,如果不存在,添加索引
  33. // 有三个属性:1、表的别名;2、是否先删除所有表(bool);3、显示详细信息
  34. }

增删改查

  1. ormer := orm.NewOrm() //先创建一个对象
  2. // 对单个数据增删改查
  3. // 增加
文档更新时间: 2023-07-19 13:51   作者:张尚