首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang 语言 Web 框架 beego v2 之写操作

Golang 语言 Web 框架 beego v2 之写操作

作者头像
frank.
发布于 2020-12-08 06:52:16
发布于 2020-12-08 06:52:16
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

01

介绍

beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自

Django ORM 和 SQLAlchemy。

已支持的数据库驱动有MySQLPostgreSQL 和 Sqlite3。

beego v2.x 和 beego v1.x 在 ORM 上的区别是,beego v2.x 的 ORM 对象被设计为无状态的,它是线程安全的,建议大家在使用时,一个数据库只对应一个 ORM 对象。

本文全篇都是以 MySQL 为例。

02

安装

如果您使用的是 beego 框架,beego ORM 已默认安装,如果您没有使用 beego 框架,可使用 go get 安装 beego ORM:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get github.com/astaxie/beego/client/orm

03

注册

注册驱动

参数 1 是驱动名称,参数 2 是驱动类型,需要注意的是,不要忘记导入 MySQL 驱动。

注册数据库

beego ORM 必须注册一个别名为 default 的数据库,作为默认使用。参数 1 是数据库的别名,用来在 ORM 中切换数据库使用,参数 2 是驱动名称,参数 3 是对应的 dataSource。

设置数据库最大空闲连接数

根据数据库的别名,设置数据库的最大空闲连接数。

设置数据库最大连接数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
orm.SetMaxOpenConns("default", 10)

注册模型

注册模型,同时注册多个模型,使用英文逗号分隔。

使用表前缀注册模型

使用表前缀注册模型,同时注册多个模型,使用英文逗号分隔。

注册模型和使用表前缀注册模型,不可同时使用,重复注册模型,会导致成程序 panic。

04

自动建表

默认表名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AuthUser -> auth_user
Auth_User -> auth__user
DB_AuthUser -> d_b__auth_user

自定义表名

如果设置了表前缀,自定义表名会在开头拼接上前缀。

自定义存储引擎

默认使用 MySQL 数据库设置的存储引擎,如果您需要在程序中指定存储引擎,可以使用以上方式设置。

设置参数

在结构体中,可以使用 orm 标签设置数据库的属性,限于篇幅,具体使用方法请参考官方手册。

自动建表

参数 1 是数据库别名,参数 2 是布尔类型的 force,参数 3 是布尔类型的 verbose。force 为 true 代表 drop table 后再建表;verbose 为 true 代表打印建表的执行过程。

自动建表功能在 force 为 false 时,会自动创建新增的字段和索引。删除或修改操作,需要用户自行手动处理。

05

新增

单条插入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (u *UserController) Create() {
  o := orm.NewOrm() // 创建一个 Ormer
  name := u.GetString("name", "unknow")
  age, _ := u.GetUint8("age", 0)
  user := &models.User{
    Name: name,
    Age: age,
  }
  id, err := o.Insert(user)
  if err != nil {
    log.Fatalln(err.Error())
    return
  }
  fmt.Println("id:", id)
}

Insert 方法插入单条数据,接收参数必须是指针类型,返回值有两个,分别是自增id 和 err。

批量插入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (u *UserController) Create() {
  o := orm.NewOrm() // 创建一个 Ormer
  users := []models.User{}
  _ = json.Unmarshal(u.Ctx.Input.RequestBody, &users)
  rows, err := o.InsertMulti(2, users)
  if err != nil {
    log.Fatalln(err)
    return
  }
  fmt.Println("rows:", rows)
}

InsertMulti 方法批量插入数据,参数 1 是批量插入的数量,参数 2 是 slice,参数 1 的值为 1 时,将会按照顺序插入 slice 中的数据。返回值有两个,分别是插入行数和 err。

06

修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (u *UserController) Update() {
  web.BConfig.WebConfig.AutoRender = false
  o := orm.NewOrm()
  user := models.User{}
  _ = json.Unmarshal(u.Ctx.Input.RequestBody, &user)
  rows, err := o.Update(&user, "Name")
  if err != nil {
    log.Println(err.Error())
    return
  }
  fmt.Println("rows:", rows)
}

Update 方法更新数据,参数 1 是更新对象,参数 2 是更新的字段,多个字段用英文逗号分隔,默认更新多有字段。返回值有两个,分别是更新行数和err。

07

删除

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (u *UserController) Delete() {
  web.BConfig.WebConfig.AutoRender = false
  o := orm.NewOrm()
  id, _ := u.GetUint64("id", 0)
  user := models.User{
    Id: id,
  }
  rows, err := o.Delete(&user)
  if err != nil {
    log.Println(err.Error())
    return
  }
  fmt.Println("rows:", rows)
}

Delete 方法删除数据,参数是删除对象,返回值有两个,分别是更新行数和 err。

08

总结

本文开篇介绍了 beego ORM 的设计思路和已支持的数据库驱动,并且介绍了 v2 和 v1 的区别,然后详细介绍了 beego ORM 的安装和使用方法。关于更多细节,请参阅官方手册。

参考资料:

https://beego.me/docs

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Go语言开发栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
IDEA安装Lombok插件失败的解决方案
Lombok是Java语言的实用工具,确切的说,应该说是一个很好用的插件,对,插件!可以用来帮助开发人员消除Java代码的冗长,尤其是对于简单的Java对象(POJO),它通过注解实现这一目的,而不是一大段一大段的Java方法。
程序员十三
2018/08/01
2.1K0
IDEA安装Lombok插件失败的解决方案
Plugin 'Lombok Plugin' is incompatible with this installation
Plugin 'Lombok Plugin' is incompatible with this installation
程序员十三
2018/08/01
1.2K0
Plugin 'Lombok Plugin' is incompatible with this installation
IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐
满满的都是干货  所有插件都是在 ctrl+alt+s 里的plugins 里进行搜索安装
Java高级架构师
2021/05/24
5.3K0
各种 IntelliJ IDEA 酷炫插件推荐
今天介绍一下IDEA的一些炫酷的插件,IDEA强大的插件库,不仅能给我们带来一些开发的便捷,还能体现我们的与众不同。
芋道源码
2019/05/14
1.2K0
IntelliJ IDEA Community Edition 社区版插件汇总「建议收藏」
今年Idea对盗版软件打击力度加大,朋友们会发现,旗舰版自己激活使用,过几天就会失效,需要重新激活,有的小伙伴就会选择去淘宝花钱买个教育邮箱注册,这个方法我使用过,过了两三个月就不能用了,着实让人头疼。 如何解决呢?我想到了Idea社区版本,下载一个使用,将我的Spring boot项目导入,启动下试试,不出所料,报错了。 好啦!步入正题。
全栈程序员站长
2022/09/29
17.6K0
IntelliJ IDEA Community Edition 社区版插件汇总「建议收藏」
你们要的Intellij IDEA 插件开发秘籍,来了!
王昭霞,软件开发工程师,先后从事脚本工具编写、工具开发、Android基础模块开发等工作。
京东技术
2018/09/28
57.3K13
你们要的Intellij IDEA 插件开发秘籍,来了!
各种 IntelliJ IDEA 酷炫插件推荐
分别是安装JetBrains插件,第三方插件,本地已下载的插件包。详情见往期关于settings的文章。
程序猿DD
2019/05/14
1.5K0
各种 IntelliJ IDEA 酷炫插件推荐
如何查看HDP各组件版本信息,两种办法
大家好,我是 create17。自从 2017 年就开始围绕 Ambari 做相关工作。期间做过 Ambari 安装部署、页面生产级别的汉化、Ambari 自定义服务集成、前端页面开发、后端 API 接口开发、Ambari Server HA、部分原生 bug 修改,以及 HDP 相关常用组件的基本使用。
create17
2022/11/17
1.3K0
如何查看HDP各组件版本信息,两种办法
社区版本idea查看继承关系的骚操作
大家都会被idea 的专业版注册码随时被禁,而且费用过高而困扰。浪尖一直都是用的社区版本,很多粉丝留言说社区版本没办法利用uml查看类的继承关系,今天浪尖就给大家分享一个适用于社区版本idea 的插件,很炫酷的查看类的继承关系,名字叫做 code iris。
Spark学习技巧
2020/07/03
3.7K0
我只装迅速提升效率的 IntelliJ IDEA 插件
IntelliJ IDEA 默认安装并提供了非常多的工具,比如 Git Integration、Maven Integration、Markdown support、SSH Remote Run 等。其中有很多好用,但是不为人知的工具。
Java识堂
2019/05/24
3.4K0
我只装迅速提升效率的 IntelliJ IDEA 插件
idea中lombok无法安装
http://plugins.jetbrains.com/plugin/6317-lombok-plugin
botkenni
2022/03/24
2.1K0
idea中lombok无法安装
IntelliJ IDEA 2021.2 发布,这次要干掉 FindBugs 了!!
点击关注公众号,Java干货及时送达 大家好,我是你们的码农大哥——栈长。 IDEA 2021.2 来了 距离《IntelliJ IDEA 2021.1》的发布已经过去 3 个月了,现在 IDEA 2021.2 也来了: 老规矩,更新,解读安排上! 更新完,查看 IDEA 版本: 我去,怎么改成这样了。。完全换了一种 UI。。 试试重新启动,看看有没有启动页面,有点意外,启动页面也没有了,打开会显示项目对话框: 之前的关于 IDEA 菜单打开页和启动页面是一样的,现在完全不一样了。。 栈长注意到官方
Java技术栈
2022/03/03
9270
IntelliJ IDEA 使用技巧与插件推荐
IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛用于 Java、Kotlin、Python、JavaScript 等语言的开发。凭借其智能的代码补全、强大的调试工具和丰富的插件生态,IntelliJ IDEA 成为开发者们的首选工具之一。本文将分享一些实用的 IntelliJ IDEA 使用技巧,并推荐一些提高工作效率的插件。
盹猫
2025/07/22
1700
你的Idea还可用吗?不妨试试另一个开发神器!
Idea是JetBrains软件公司开发的Java集成开发环境,可以说是当下最好用的Java开发IDE。
三分恶
2020/12/07
1.6K0
你的Idea还可用吗?不妨试试另一个开发神器!
技巧 | 如何用 IDEA 提升十倍开发效率?
JetBrains 公司提供了一系列功能强大、风格统一的开发工具,深受开发者喜爱。其中,IDEA 是面向 Java 开发的专业 IDE(集成开发环境),90% 以上的企业都在使用 IDEA 进行 Java 开发,而不是用其他的工具如 Eclipse。
程序员鱼皮
2020/11/25
2.2K0
技巧 | 如何用 IDEA 提升十倍开发效率?
使用intellij idea 查看Java字节码
最近在研究 jvm ,需要查看字节码. 整理使用intellij idea 查看Java字节码 使用方式如下:
用户7798898
2020/09/27
8490
使用intellij idea 查看Java字节码
IntelliJ IDEA的插件:常用的IDEA好用插件收藏
IntelliJ IDEA 是一款强大的集成开发环境,广泛用于Java、Kotlin、Groovy等语言的开发。它的强大之处不仅体现在智能编码、代码重构、版本控制等核心功能上,还在于其支持丰富的插件生态系统。插件可以增强IDEA的功能,提高开发效率,满足各种编码需求。本文将介绍一些常用的IDEA插件,帮助你充分发挥IDEA的潜力。
IT_陈寒
2023/12/13
1.2K0
IntelliJ IDEA的插件:常用的IDEA好用插件收藏
查看CentOS版本信息 原
    cat  缩写concatenate  cat命令可以用来显示、合并文件。
拓荒者
2019/03/11
1.7K0
查看CentOS版本信息
                                                                            原
开发工具|IntelliJ IDEA 2022.2 新版本操作
说明:当前这篇文章是在2022版本出来后,尝试新版特性而写的一篇博文,现在看来,只能当做消遣,饭后谈资。
六月暴雪飞梨花
2023/11/30
5710
开发工具|IntelliJ IDEA 2022.2 新版本操作
再探IntelliJ IDEA(超详细IntelliJIDEA的安装、配置与使用)
再前段时间写了一篇初探IntelliJ IDEA文章、不是很详细,使用一段时间后,打算重新整理一波详细使用教程,IDEA对于Eclipse确实方便了许多,节省了开发效率.下面就继续再探IDEA,文章比较长、耐心看完肯定能掌握基本操作80%,加油~~
Lcry
2022/11/29
6.6K0
推荐阅读
相关推荐
IDEA安装Lombok插件失败的解决方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验