GoFrame ORM原生方法 开箱体验 (下)

简介: gf是支持ORM原生操作的,在ORM链式操作执行不了太过于复杂的SQL操作时,可以交给方法操作来处理。上一篇文章 整理了ORM的原生方法,这篇文章根据整理的原生方法整理对应的开箱体验。

开箱体验


1. ORM对象


// 获取默认配置的数据库对象(配置名称为"default")
db := g.DB()
// 获取配置分组名称为"user"的数据库对象
db := g.DB("user")
// 使用原生单例管理方法获取数据库对象单例
db, err := gdb.Instance()
db, err := gdb.Instance("user")


tips


不用的时候不需要使用Close方法关闭数据库连接,数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭


2. 数据写入


r, err := db.Insert(ctx, "user", gdb.Map {
    "name": "王中阳",
})


3. 数据查询(单条)


虽然limit 10,但是因为我们使用的是GetOne,仍然只会返回单条数据


one, err := db.GetOne(ctx, "select * from user limit 10")
one, err := db.GetOne(ctx, "select * from user where id=100")
one, err := db.GetOne(ctx, "select * from user where id=?", 100)
one, err := db.GetOne(ctx, "select * from user where id=?", g.Slice{100})


4. 数据查询(列表)


list, err := db.GetAll(ctx, "select * from user limit 10")
list, err := db.GetAll(ctx, "select * from user where age > ? and name like ?", g.Slice{20, "%金%"})
list, err := db.GetAll(ctx, "select * from user where status=?", g.Slice{1})


5. 数据保存


数据保存是Save,插入数据是insert,区别是是否指定主键


r, err := db.Save(ctx, "user", gdb.Map {
    "id"  :  1,
    "name" : "王中阳",
})


6. 批量操作


batch := 10
_, err := db.Insert(ctx, "user", gdb.List {
    {"name": "小明"},
    {"name": "小华"},
    {"name": "小军"},
    {"name": "小高"},
}, batch)


tips


  1. 其中batch参数用于指定批量操作中分批写入条数数量(默认是10)。
  2. 表示批量写入数据时的每批次数量,这个数值跟你数据库服务器配置的SQL BufferSize数值有关。


7. 数据更新/删除


// db.Update/db.Delete 同理
// UPDATE `user` SET `name`='王中阳' WHERE `id`=10000
r, err := db.Update(ctx, "user", gdb.Map {"name": "王中阳"}, "id=?", 10000)
// UPDATE `user` SET `name`='王中阳' WHERE `id`=10000
r, err := db.Update(ctx, "user", "name='王中阳'", "id=10000")
// UPDATE `user` SET `name`='王中阳' WHERE `id`=10000
r, err := db.Update(ctx, "user", "name=?", "id=?", "王中阳", 10000)


tips


参数建议使用?占位符进行输入,避免SQL注入风险。


总结


虽然GoFrame的ORM链式操作非常简单且强大,但是业务中总还是有一些逻辑需要使用原生方法实现,化繁为简。

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
7月前
|
小程序 开发者
4月开发者日回顾丨小程序开发常见问题解析
4月开发者日回顾丨小程序开发常见问题解析
85 0
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
52 4
|
19天前
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
49 4
|
27天前
|
SQL 缓存 测试技术
构建高性能RESTful API:最佳实践与避坑指南###
—— 本文深入探讨了构建高性能RESTful API的关键技术要点,从设计原则、状态码使用、版本控制到安全性考虑,旨在为开发者提供一套全面的最佳实践框架。通过避免常见的设计陷阱,本文将指导你如何优化API性能,提升用户体验,确保系统的稳定性和可扩展性。 ###
57 12
|
4月前
|
API 数据库 UED
全面解析构建高性能API的秘诀:运用Entity Framework Core与异步编程提升Web应用响应速度及并发处理能力的详细指南与实践案例
【8月更文挑战第31天】本文详细介绍了如何利用 Entity Framework Core (EF Core)的异步编程特性构建高性能 API。通过创建基于 EF Core 的 .NET Core Web API 项目,配置数据库上下文,并定义领域模型,文章展示了如何使用异步方法进行数据查询、加载相关实体及事务处理。具体代码示例涵盖了 GET、POST、PUT 和 DELETE 操作,全面展示了 EF Core 异步编程的优势,有助于提升 API 的响应速度和处理能力。
50 0
|
7月前
|
移动开发 JavaScript Android开发
H5封装和原生开发这两种不同的应用开发方式有什么区别?
原生开发是指为特定操作系统(如iOS或Android)开发应用程序。整个应用程序代码,逻辑和界面都是按照该系统提供的规范来开发,因此其性能和体验感会很好,可以与设备充分融洽,提供流畅的用户体验。原生开发App充分的利用了操作系统的功能,给设备上的应用程序提供了高性能和良好的用户体验。原生应用程序拥有很好的设备兼容性,可以直接访问设备的硬件功能等,如相机,蓝牙等。
52 1
|
7月前
|
XML JavaScript 前端开发
基于jeecgboot的flowable流程支持服务任务的功能
基于jeecgboot的flowable流程支持服务任务的功能
183 0
|
7月前
|
移动开发 小程序 IDE
11月开发者日回顾|IDE支持版本管理、JSAPI新增预拉取能力、开发者高频问题详解
11月开发者日回顾|IDE支持版本管理、JSAPI新增预拉取能力、开发者高频问题详解
65 11
|
7月前
|
人工智能 供应链 监控
推荐一款TinyEngine低代码引擎!支持自定义DSL 生成定制的源码、跨技术栈!
推荐一款TinyEngine低代码引擎!支持自定义DSL 生成定制的源码、跨技术栈!
133 0
|
移动开发 小程序 开发工具
Donut 多端框架是支持使用小程序原生语法开发移动应用的框架
Donut 多端框架是支持使用小程序原生语法开发移动应用的框架,开发者可以一次编码,分别编译为小程序和 Android 以及 iOS 应用,实现多端开发
439 0
Donut 多端框架是支持使用小程序原生语法开发移动应用的框架