beego框架之orm模块——mysql
参考beego原文:http://beego.me/docs/mvc/model/orm.md#main.go
beego ORM 是一个强大的 Go 语言 ORM 框架,orm模块主要是处理MVC中的M(models)。
首先以bee工具创建一工程名为:beegoorm,修改的文件为 beegoorm/main.go 和 beegoorm/models/models.go(仅2个文件)
beegoorm/models/models.go
package models import (
"github.com/astaxie/beego/orm"
) type User struct {
Id int
Name string
Profile *Profile `orm:"rel(one)"` // OneToOne relation
} type Profile struct {
Id int
Age int16
User *User `orm:"reverse(one)"` // 设置反向关系(可选)
} func init() {
// 需要在 init 中注册定义的 model
orm.RegisterModel(new(User), new(Profile))
}
beegoorm/main.go
package main import (
"beegoorm/models"
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm" _ "beegoorm/routers"
_ "github.com/go-sql-driver/mysql"
) func init() {
// 注册驱动
orm.RegisterDriver("mysql", orm.DR_MySQL)
// 注册默认数据库
// 我的mysql的root用户密码为tom,打算把数据表建立在名为test数据库里
// 备注:此处第一个参数必须设置为“default”(因为我现在只有一个数据库),否则编译报错说:必须有一个注册DB的别名为 default
orm.RegisterDataBase("default", "mysql", "root:tom@/test?charset=utf8")
} func main() {
// 开启 orm 调试模式:开发过程中建议打开,release时需要关闭
orm.Debug = true
// 自动建表
orm.RunSyncdb("default", false, true) // 创建一个 ormer 对象
o := orm.NewOrm()
o.Using("default")
perfile := new(models.Profile)
perfile.Age = 30 user := new(models.User)
user.Name = "tom"
user.Profile = perfile // insert
o.Insert(perfile)
o.Insert(user)
o.Insert(perfile)
o.Insert(user)
o.Insert(perfile)
o.Insert(user) // update
user.Name = "hezhixiong"
num, err := o.Update(user)
fmt.Printf("NUM: %d, ERR: %v\n", num, err) // delete
o.Delete(&models.User{Id: 2}) beego.Run()
}
数据库建表及数据增删改的结果如下:
数据库名:test
数据表:user,profile
user表 profile表
2015/07/02 追记:
在models模块里,被注册的struct与数据库里的表会以一种默认方式进行一一对应。然而,在实际开发中,默认的这种映射关系并不是我们所期待的,所以我们需要指定被注册的struct与数据库里的表之间的关系。
type User struct{ // 默认情况对应数据库的表名为:user
MyName string // 默认情况对应数据库里user表字段为:my_name
MyAge string // 默认情况对应数据库里user表字段为:my_age
}
orm.RegisterModel(new(User)) 新的需求:结构体名为User对应数据库的表名为:test_user
MyName的成员对应数据库的字段名为:MyName
MyAge的成员对应数据库的字段名为:MyAge
那么该User的结构体又该如何定义呢? 新需求的User结构体:
type User struct{
MyName string `orm:"column(MyName)"`
MyAge string `orm:"column(MySex)"`
}
orm.RegisterModel(new(User)) // 自定义表名(系统自动调用)
func (u *User) TableName() string {
return "test_user"
}
beego框架之orm模块——mysql的更多相关文章
- Spring之ORM模块
ORM模块对Hibernate.JDO.TopLinkiBatis等ORM框架提供支持 ORM模块依赖于dom4j.jar.antlr.jar等包 在Spring里,Hibernate的资源要交给Sp ...
- golang利用beego框架orm操作mysql
GO引入orm框架操作mysql 在beego框架中引入orm操作mysql需要进行的步骤: 第一步:导入orm框架依赖,导入mysql数据库的驱动依赖 import ( "github.c ...
- beego框架学习--beego orm映射
什么是ORM 即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作 ...
- beego框架学习(三) -orm的使用
2 3 4 5 6 7 8 9 10 11 目前beego-orm支持的数据有: - MySQL:https://github.com/go-sql-driver/mysql - PostgreSQL ...
- Go语言使用Beego的ORM插入Mysql后,时区不一致的解决方案
一.解决方案: 方案一: orm.Debug = false orm.DefaultTimeLoc = time.UTC orm.RegisterDriver("mysql", o ...
- golang学习之beego框架配合easyui实现增删改查及图片上传
golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...
- 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
- Go beego框架使用笔记(一)
Beego介绍 beego我认为是go初学者比较容易上手的一门MVC Web框架.简单易懂,最重要的一点就是提供了中文文档,这对于我这种英语能力比较差的人来说就是福音. beego的官网上是这么介绍b ...
- 四 Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
随机推荐
- STM8 ADC 多个通道连续扫描缓冲区数据带中断模式的正确写法
近日调试了STM8S的ADC采集多通道数据的程序,按照之前的立即,将ADC1设置为:扫描模式,连续采集,数据缓存模式,中断使能后应该可以在中断后读取到数值了,可是无论怎样都只能读取到第一个缓冲器的数据 ...
- markdown常用语法使用笔记+使用技巧(持续更新......)
参考引用内容: 简书教程 一 基本语法 1. 标题 语法: 在想要设置为标题的文字前面加#来表示,一个#是一级标题,二个#是二级标题,以此类推.支持六级标题. 注:标准语法一般在#后跟个空格再写文字 ...
- liberty | 在IDEA整合Springboot与IBM liberty
在IDEA整合Springboot与IBM liberty 简介 Liberty 是一款全新的轻量级应用服务器,它将用户的良好开发体验作为最主要的出发点.其主要特点和内容包括: 高模块化--该功能允许 ...
- usaco1.1
Your Ride Is Here #include <iostream> #include <string> #include <vector> using na ...
- NetworkX包
官方教程 NetworkX是一个创建,操作,研究复杂网络的结构,动态,功能的python包. #创建一个network import networkx as nx G = nx.Graph() #no ...
- pip install 提示:OSError: [Errno 13] 权限不够:
使用pip install 安装时报错: OSError: [Errno 13] 权限不够: 解决方法:1.加sudo. 2.pip install packagename --user,只为当前用户 ...
- HDU_4403
http://acm.hdu.edu.cn/showproblem.php?pid=4403 数值不大,暴力枚举,枚举每一种划分,然后枚举每一种等号位置. #include<iostream&g ...
- 微信小程序—Flex布局
参考教程:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html https://xluos.github.io/demo/flexb ...
- C++中类成员变量在初始化列表中的初始化顺序
引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: class TestClass1 { public: TestClass1() { cout << ...
- MySQL8.0 InnoDB并行执行
概述 MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透.之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富的生态.MySQL在 ...