Beerus-DB

数据库操作框架
授权协议 MIT
开发语言 Google Go
所属分类 数据库相关、 数据库管理工具
软件类型 开源软件
地区 国产
投 递 者 何章横
操作系统 未知
开源组织
适用人群 未知
 软件概览

Beerus-DB,是 Beerus 的子项目之一,是一个数据库操作框架,用到了[go-sql-driver/mysql]来做数据库连接与基础操作,在此基础上做了很多扩展,比如:连接池管理,多数据源,事务管理,单表无sql操作,多表以及复杂操作可以自己写sql,sql支持{}占位符,可以用struct作为参数来操作数据库等

文档

https://beeruscc.com/beerusdb

示例

单表操作

根据条件查询单表数据

conditions := make([]*entity.Condition,0)
conditions = append(conditions, entity.GetCondition("id > ?", 10))
conditions = append(conditions, entity.GetCondition("and (user_name = ? or age > ?)", "bee", 18))
conditions = append(conditions, entity.GetCondition("order by create_time desc", entity.NotWhere))

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

根据条件修改单表数据

// Conditions set
conditions := make([]*entity.Condition,0)
conditions = append(conditions, entity.GetCondition("id = ?", 1))

// Data settings to be modified
data := ResultStruct{UserName: "TestNoSqlUpdate"}

// Execute the modification operation
result, err := operation.GetDBTemplate("Data source name").Update("table name", dbutil.StructToMapIgnore(&data, data, true),conditions)

根据条件删除单表数据

// Set delete conditions
conditions := make([]*entity.Condition,0)
conditions = append(conditions, entity.GetCondition("id = ?", 2))

// Perform a delete operation
_, err := operation.GetDBTemplate("Data source name").Delete("table name", conditions)

插入一条数据

data := ResultStruct{
		UserName: "TestNoSqlInsert",
		UserEmail: "xxxxx@163.com",
		UpdateTime: "2021-12-09 13:50:00",
	}

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

自定义sql

查询

// struct参数
res := ResultStruct{Id: 1}

// 查多条, 注:这里需要用到占位符
resultMap, err := operation.GetDBTemplate("Data source name").SelectListByMap("select * from xt_message_board where id < {id}", dbutil.StructToMap(&res, res))

// 查一条, 注:这里需要用到占位符
resultMap, err := operation.GetDBTemplate("Data source name").SelectOneByMap("select * from xt_message_board where id < {id}", dbutil.StructToMap(&res, res))

增删改

res := ResultStruct{Id: 1, UserName: "TestUpdateByMap"}

// 无论是增删改,都是调用ExecByMap函数,将sql和参数传入即可,注:这里需要用到占位符
operation.GetDBTemplate("Data source name").ExecByMap("update xt_message_board set user_name = {user_name} where id = {id}", dbutil.StructToMap(&res, res))

分页查询

data := ResultStruct{
    UserName: "TestNoSqlInsert",
    UserEmail: "xxxxx@163.com",
}

// 创建分页参数
param := entity.PageParam{
    CurrentPage: 1,  // 第几页
    PageSize: 20,  // 每页多少条
    Params: dbutil.StructToMap(&data, 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, res))

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

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

想了解更多的话,可以查阅我们的文档哦

  • Berkeley DB使用简介 1来源: 作者: 时间:2007-12-02 Tag: 点击: 587 1        简介 BDB的全称Berkeley DB,是一套开放源码的嵌入式数据库的程序库。它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。Berkeley DB为数据的存取和管理提供了一组简洁的函数调用API接口。 BDB为多种编程语言提供了API接口,其中包括C、C+

  • 问题:打开Hbuilder X,运行项目时出现 Browserslist: caniuse-lite is outdated. Please run:npx browserslist@latest --update-db 解决方法: 注意: 操作前可以先保存需要修改的对应文件夹下的内容,方便还原。 一 打开HBuilderX的安装目录下的 HBuilderX/plugins/uniapp-cli

  • 使用yarn start 运行项目出现警告⚠️ Browserslist: caniuse-lite is outdated. Please run: npx browserslist@latest --update-db 或者 $ npm update 按照提示操作,运行上面 npx browserslist@latest --update-db 能解决问题。 但是有的版本会报错提示运行 npm

  • 现象 cloudera-scm-server-db 启动失败, [root@esggy-delivery-1 cloudera-scm-server]# service cloudera-scm-server-db start Starting cloudera-scm-server-db (via systemctl): Job for cloudera-scm-server-db.servi

  • Hutool 官网:https://www.hutool.cn 官方参考文档:https://www.hutool.cn/docs 本节内容对应官方文档位置:概述 (hutool.cn) Hutool 版本:5.7.1 特点 基于JDBC进行封装,使用ActiveRecord思想操作数据库 使用Entity代替Bean,减少bean代码编写,更灵活 支持Bean和Entity的转换,兼容传统ORM

  • Exploit-database使用新手指南

  • Backtrack 已经内置了一个由” Offebnsive Security”提供的漏洞利用程序集的数据库Exploit-DB,可以用于平时的参考和使用。访问的方法是在命令提示符中输入一下命令: # cd /pentest/exploits/exploitdb/ # cat files.csv | less 即可查看所有内置的漏洞利用程序集,这将会打开Exploit-DB在/pentest/ex

  • 开始 <!-- 连接池https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.14</version> </depen

  • -20dB谱宽就是信号衰减到十分之一时的频谱带宽。 dB的含义: 1. dB基本上是一个比例数值,也就是一种倍数的表示单位,也就是测试数据与参考标准的相对差异表示。 2. 计算公式上:dB = 10lg (P1/P2)= 20 lg (V1 / V2)(P代表功率,V代表电压)(lg是10为底的对数) V1是测试数据,V2是参考标准。例如V1数据是V2的2倍,就是6dB。 前面加个负号相当于正号的

  • 在svnserve.conf:文件中去掉authz-db = authz前面的#号,会出现的认证失败。 造成此原因的主要问题就是authz文件中权限没有配置好。 例如: 创建prj1库 svnadmin create prj1 修改配置文件 svnserve.conf: [general] anon-access = read auth-access = write password-db = p

  • 官网中的示例代码 flask init-db 结果是 `Error: No such command “init-db”. 那是因为init-db 已经被 flask db init 给代替了 运行 flask db init 报错 Usage: flask db init [OPTIONS] Error: Failed to find Flask application or factory

  • 1.首先,说一下EFCore使用DBfist的基础语法 。 dotnet ef dbcontext scaffold "Server=数据库连接地址;Database=数据库名 称;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer 后续参数...... 2.语法中的后续参数说明如下表。   简写 指令 说明 -d

  • 解决方案: 找到HBuilderX的安装目录, cmd切换到HBuilderX/plugins/uniapp-cli下 删除node_modules以及package-lock.json 在当前目录执行npm install 重新打开HBuilderX运行

  • .db-wal文件 wal意思是write-ahead log,顾名思义就是保存的一个日志,对于提交/回滚目的很有用。 sqlite 3.7之后开始提供这个功能,当一个数据库采用WAL模式,所有连接数据的操作都必须使用WAL,然后在在数据库文件夹下生成一个后缀为.db-wal的文件保存操作日志。该日志使SQLite可以在事务失败时回滚更改。 SQLite如何使用它们以及为什么将它们保留这么长时间取

  • 主要是说Browserslist太老旧了,需要更新了… 操作步骤: 1、删除 package-lock.json 2、删除 node_modules 3、重新安装 yarn install 4、执行命令行 npx browserslist@latest –update-db 问题二、Unknown browser query –update-db. Maybe you are using old

 相关资料
  • 由来 数据库操作不外乎四门功课:增删改查,在Java的世界中,由于JDBC的存在,这项工作变得简单易用,但是也并没有做到使用上的简化。于是出现了JPA(Hibernate)、MyBatis、Jfinal、BeetlSQL等解决框架,或解决多数据库差异问题,或解决SQL维护问题。而Hutool对JDBC的封装,多数为在小型项目中对数据处理的简化,尤其只涉及单表操作时。OK,废话不多,来个Demo感受

  • 本文向大家介绍tp5(thinkPHP5)框架数据库Db增删改查常见操作总结,包括了tp5(thinkPHP5)框架数据库Db增删改查常见操作总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了tp5(thinkPHP5)框架数据库Db增删改查常见操作。分享给大家供大家参考,具体如下: 添加数据insert 添加数据。 tp5还可以通过insertAll插入多条数据。 获取插入的id。 修

  • 本文向大家介绍CI框架中数据库操作函数$this->db->where()相关用法总结,包括了CI框架中数据库操作函数$this->db->where()相关用法总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了CI框架中数据库操作函数$this->db->where()相关用法。分享给大家供大家参考,具体如下: CI 框架数据库操作函数 this->db->where() 的使用 1)

  • 本文向大家介绍Laravel框架数据库CURD操作、连贯操作总结,包括了Laravel框架数据库CURD操作、连贯操作总结的使用技巧和注意事项,需要的朋友参考一下 一、Selects 检索表中的所有行 从表检索单个行 检索单个列的行 检索一个列值列表 该方法将返回一个数组标题的作用。你也可以指定一个自定义的键列返回的数组 指定一个Select子句 Select子句添加到一个现有的查询$query

  • 数据库的操作是每个phpweb框架的核心功能,我们提供数据库数据库的标准调用模式为: 你可以执行严格模式,也就是左边的那条线,Controller->Service->Dao->Model->DB,也可以走简单模式 Controller->Model->DB。个人根据自己的需求,走标准麻烦些(几乎所有的机构和系统都是这样^_^), 但是扩展性会好些,但是使用简单模式开发效率就会高些,性能会好些,但

  • 这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。 我选用了Sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个ORM框架。 /** * 数据库支持 * @author biezhi * */ public final class MarioDb { private static Sql2o sql2o = null;