orm含义
object relaction mapping
数据表/数据表的操作 <=> 面向对象
类,对象,方法
结构体 结构体的实例 结构体的方法
表的定义(通过列定义)<=>结构体(通过属性定义)
数据 <=> 实例
对数据的操作 <=> 方法
通过定义结构体 自动生成(工具)表
通过对结构体实例的方法调用 对表进行操作
ORM框架(不是万能的,一些复杂的sql,或对性能较高的sql还是需要原生sql来操作)
beego/orm
数据库 => 配置类信息
操作 => orm包内提供的接口(函数,方法)
表对应的结构体
示例
package main
import (
_ "github.com/go-sql-driver/mysql"
"github.com/astaxie/beego/orm"
"log"
)
type User struct { //
Id int64 `orm:"column(uid);pk;auto"`
Name string `orm:"size(64);"`
Password string `orm:"size(1024);"`
Tel string `orm:"size(32);"`
Addr string `orm:"type(text)"`
Birthday *time.Time `orm:"type(date)"`
CreatedAt *time.Time `orm:"auto_now_add"`
UpdatedAt *time.Time `orm:"auto_now"`
DeletedAt *time.Time `orm:"null"`
}
func main(){
dsn :="mysql:mysql@2020@tcp(10.0.0.2:3306)/user?parseTime=true"
// 1、导入驱动(初始化)
// 2、导入orm包
// 3、在orm包中注册驱动(mysql)
orm.RegisterDriver("mysql",orm.DRMySQL) //可省略
// 4、注册数据库(数据库的配置信息)
if err:=orm.RegisterDataBase("default","mysql",dsn);err!=nil{
log.Fatal(err)
}
// 5、注册模型(表对应的结构体)
orm.RegisterModel(&User{}) // 指针类型的实例
// 6、可以进行操作了
//DDL
orm.RunSyncdb() //同步数据库,检查struct 与数据库表是否存在,如果不存在就会创建对应的表;若表存在,检查属性列是否再表中存在,如果不存在,就会添加列;检查索引是否存在,如果不存在,添加索引
// 有三个属性:1、表的别名;2、是否先删除所有表(bool);3、显示详细信息
}
增删改查
ormer := orm.NewOrm() //先创建一个对象
// 对单个数据增删改查
// 增加
文档更新时间: 2023-07-19 13:51 作者:张尚