1 Star 0 Fork 0

小于的个人工具集/dbgorm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
enhance_old.go 3.36 KB
一键复制 编辑 原始数据 按行查看 历史
xiaoyutab 提交于 2024-06-24 11:51 . 数据库增强
package dbgorm
import (
"database/sql"
"errors"
"gorm.io/gorm"
)
// 封装原有方法,避免调用后直接替换掉指向地址
// 检索某个列或一组列的唯一值。当您指定要查询的独特字段时,SQL 将返回这些字段的独特值,并按照指定的顺序进行检索。
// 等同于gorm的Distinct方法,此处仅为内部的一个封装
//
// args 检索条件
func (db *DB) Distinct(args ...any) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Distinct(args...)
return db
}
// 分组
//
// name 分组字段
func (db *DB) Group(name string) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Group(name)
return db
}
// 排重
//
// query 排重条件
// args 附加参数
func (db *DB) Having(query any, args ...any) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Having(query, args...)
return db
}
// join关联
// 等同于gorm的joins
//
// query 关联表
// args 关联参数
func (db *DB) Joins(query string, args ...any) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Joins(query, args...)
return db
}
// Order排序
//
// value 排序条件
func (db *DB) Order(value any) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Order(value)
return db
}
// 设置查询字段
//
// query 查询条件
// args 附加参数
func (db *DB) Select(query any, args ...any) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Select(query, args...)
return db
}
// 设置忽略字段,和Select取反
//
// columns 要忽略的字段
func (db *DB) Omit(columns ...string) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Omit(columns...)
return db
}
// 设置表格【等同于gorm的table】
func (db *DB) Table(name string, args ...any) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Table(name, args...)
return db
}
// Where搜索
// 此搜索条件和gorm的where等同
//
// query 查询条件
// args 附加参数
func (c *DB) Where(query any, args ...any) *DB {
if c == nil || c.DB == nil {
return c
}
if query == "" {
return c
}
c.DB = c.DB.Where(query, args...)
return c
}
// Where条件
//
// query 查询条件
// args 附加参数
func (db *DB) Not(query interface{}, args ...interface{}) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Not(query, args...)
return db
}
// Where条件
//
// query 查询条件
// args 附加参数
func (db *DB) Or(query interface{}, args ...interface{}) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Or(query, args...)
return db
}
// 事务相关的支持函数,代理gorm的事务相关方法
// 开启事务,代理gorm的Begin方法
//
// opts 事务选项
func (db *DB) Begin(opts ...*sql.TxOptions) *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Begin(opts...)
return db
}
// 事务提交
func (db *DB) Commit() *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Commit()
return db
}
// 事务回退
func (db *DB) Rollback() *DB {
if db == nil || db.DB == nil {
return db
}
db.DB = db.DB.Rollback()
return db
}
// 函数式事务处理
func (db *DB) Transaction(fc func(txs *DB) error, opts ...*sql.TxOptions) error {
if db == nil || db.DB == nil {
return errors.New("数据库未连接")
}
return db.DB.Transaction(func(tx *gorm.DB) error {
return fc(db)
}, opts...)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/xgotool/dbgorm.git
git@gitee.com:xgotool/dbgorm.git
xgotool
dbgorm
dbgorm
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385