Golang Go语言 开发的 数据库操作框架

发布于 1周前 作者 caililin 来自 Go语言

项目简介

  • 项目名:Beerus-DB
  • 开发语言:golang

Beerus-DB 是 Beerus 的一个数据库操作组件,支持多数据源,连接池管理,单表操作不需要写 sql ,查询结果可以映射到 struct ,废话不多说,直接上示例。

单表操作

根据条件查询单表数据

conditions := builder.Create().
    Add("id > ?", 10).
    Add("and (user_name = ? or age > ?)", "bee", 18).
    Add("order by create_time desc", entity.NotWhere).
    Build()

resultMap, err := operation.GetDBTemplate(“Data source name”).Select(“table name”, conditions)

根据条件修改单表数据

// 条件设定
conditions := builder.Create().
    Add("id = ?", 1).
    Build()

// 要修改的数据设定 data := ResultStruct{UserName: “TestNoSqlUpdate”}

// 执行修改操作 result, err := operation.GetDBTemplate(“Data source name”).Update(“table name”, dbutil.StructToMapIgnore(&data, true),conditions)

根据条件删除单表数据

// 设定删除条件
conditions := builder.Create().
    Add("id = ?", 2).
    Build()

// 执行删除操作 _, err := operation.GetDBTemplate(“Data source name”).Delete(“table name”, conditions)

插入一条数据

data := ResultStruct{
    UserName: "TestNoSqlInsert",
    UserEmail: "[email protected]",
    UpdateTime: "2021-12-09 13:50:00",
}

result, err := operation.GetDBTemplate(“Data source name”).Insert(“table name”, dbutil.StructToMapIgnore(&data, true))

自定义 sql 操作

根据数组参数查询

param := make([]interface{}, 1)
param[0] = 1

// 查多条 resultMap, err := operation.GetDBTemplate(“Data source name”).SelectList(“select * from xt_message_board where id = ?”, param)

// 查一条 resultMap, err := operation.GetDBTemplate(“Data source name”).SelectOne(“select * from xt_message_board where id = ?”, param)

分页查询

data := ResultStruct{
    UserName: "TestNoSqlInsert",
    UserEmail: "[email protected]",
}

// 创建分页参数 param := entity.PageParam{ CurrentPage: 1, // 第几页 PageSize: 20, // 每页多少条 Params: dbutil.StructToMap(&data), // 查询参数 }

// 执行查询操作 result, err := operation.GetDBTemplate(“Data source name”).SelectPage(“select * from xt_message_board where user_name = {user_name} and user_email = {user_email}”, param)

事务管理

// 开启事务
id, err := db.Transaction()
if err != nil {
    t.Error("TestUpdateTx: " + err.Error())
    return
}

res := ResultStruct{Id: 1, UserName: “TestUpdateTx”}

// 注:这里使用的不是 GetDBTemplate ,ExecByMap ,而是 GetDBTemplateTx 和 ExecByTxMap // 使用事务和不使用事务,在调用的函数上,区别就是多了个 Tx ss, err := operation.GetDBTemplateTx(id, “dbPoolTest”).ExecByTxMap(“update xt_message_board set user_name = {user_name} where id = {id}”, dbutil.StructToMap(&res))

if err != nil { // 如果有问题就回滚事务 db.Rollback(id) t.Error("TestUpdateTx: " + err.Error()) return }

// 提交事务 db.Commit(id)

可以访问官网了解更多

https://beeruscc.com/cn/


Golang Go语言 开发的 数据库操作框架

更多关于Golang Go语言 开发的 数据库操作框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

14 回复

和 Gorm 相比如何?

更多关于Golang Go语言 开发的 数据库操作框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


不敢跟 Gorm 比较,毕竟那是一个团队开发了很久的,而我这个框架 年龄还不到 1 岁。

Beerus-DB 是主打 小型,快速开发的,不是 ORM 框架,主要还是以写 SQL 为主

已 star ,加油

感觉没有你发的那个 java 的舒服啊

那与 sqlx 相比呢

#6 又杀出来一个,跟 sqlx 有啥区别,少了几个方法?

轻量——实现在 100 行代码以内,逻辑非常简单,没有使用反射

坐标深圳,求一枚 Golang 大佬!!欢迎砸简历 V:Ifboredgunquxuexi.

坐标深圳,求一枚 Golang 大佬!!欢迎砸简历 V:Ifboredgunquxuexi.

个人感觉不如直接写 sql ,自己封装了反而不够灵活。如果仅仅为了提升开发效率可以用代码生成路线,我自己开发了一个有兴趣我可以发出来

本来就是直接写 sql 啊

针对Golang(Go语言)开发的数据库操作框架,以下是一些值得关注的框架及其特点:

  1. GORM

    • 基于ActiveRecord模式的ORM(对象关系映射)库。
    • 提供直观的API,支持对数据库对象的CRUD(创建、读取、更新、删除)操作。
    • 易于使用,且功能强大,适合各种Go应用程序的数据库操作需求。
  2. XORM

    • 支持多种关系型数据库,如MySQL、PostgreSQL和SQLite。
    • 提供丰富的API,具有强大的性能。
    • 适用于需要处理多种数据库类型的Go应用程序。
  3. Beego ORM

    • 作为Beego框架的一部分,提供轻量级的ORM接口。
    • 与Beego框架无缝集成,易于使用。
    • 适用于基于Beego框架的Go Web应用程序。

此外,这些框架通常具有以下共同特点:

  • 简化开发:通过提供内置的数据库操作支持,简化开发流程。
  • 高效性:利用Go语言的编译型特性和快速执行速度,提供高效的数据库操作。
  • 灵活性:支持多种数据库类型和查询方式,满足多样化的数据库操作需求。
  • 良好的扩展性:可以方便地与其他Go库和工具集成,扩展应用程序的功能。

在选择具体的数据库操作框架时,建议根据项目的具体需求和团队的技术栈进行综合考虑。

回到顶部