首页 资料 > > 正文

Gorm-自定义查询(一)

2023-05-01 06:29:36 来源:腾讯云 分享到:


(相关资料图)

Gorm是一个灵活且功能强大的ORM库,它支持多种方式进行数据库操作,包括常规的增删改查操作、事务处理、并发控制等。除了提供丰富的内置方法外,Gorm还允许我们自定义查询方法以满足更复杂的查询需求。

定义自定义查询方法

Gorm提供了两种方式来定义自定义查询方法:使用全局作用域或模型作用域。全局作用域定义的自定义查询方法可用于所有模型,而模型作用域定义的自定义查询方法仅适用于特定模型。

全局作用域

定义全局作用域的自定义查询方法很简单,只需要调用gorm.DB结构体上的QueryExpr方法即可,该方法定义了一个全局作用域的查询表达式。

db.QueryExpr("SELECT * FROM users WHERE name = ?", "Tom")

上述代码定义了一个全局作用域的查询表达式,该表达式会返回所有名为"Tom"的用户。

模型作用域

定义模型作用域的自定义查询方法需要在模型结构体上定义一个方法,该方法返回一个*gorm.DB类型的对象。

type User struct {    ID   uint    Name string}func (u User) FindByName(db *gorm.DB, name string) *gorm.DB {    return db.Where("name = ?", name)}

上述代码定义了一个名为FindByName的自定义查询方法,该方法会根据用户名进行查询并返回一个*gorm.DB类型的对象。在使用该自定义查询方法时,我们需要通过模型结构体来调用该方法:

var users []Userdb.Find(&users)var tomUsers []Userdb.Model(User{}).FindByName("Tom").Find(&tomUsers)

上述代码使用了db.Model方法来指定模型,并通过FindByName自定义查询方法进行了用户名的筛选。

自定义查询方法的使用

自定义查询方法可以像内置方法一样与其他Gorm方法一起使用,包括条件查询、分页查询、关联查询等。我们只需要在查询语句中添加自定义查询方法即可。下面是一个使用自定义查询方法的示例:

var users []Userdb.Model(User{}).FindByName("Tom").Where("age > ?", 18).Limit(10).Find(&users)

上述代码使用了FindByName自定义查询方法进行了用户名的筛选,然后使用了条件查询方法Where来添加额外的查询条件,最后使用了Limit方法限制查询结果数量。使用自定义查询方法可以让我们更灵活地组合查询条件,从而实现更复杂的查询操作。

关键词:

x 广告

临沂市举行首批沂蒙山世界地质公园授牌仪式 带动区域经济社会发展

首夏犹清万物秀,芬芳四溢聚蒙山。为充分发挥沂蒙山世界地质公园世界级金字招牌作用,全力服务激活蒙山旅游战略,大力带动区域经济社会发展

郑州新郑挂牌出让5宗国有建设用地使用权 起始价1.74亿元

5月20日,郑州新郑市公共资源中心披露,以挂牌方式出让5宗国有建设用地使用权。据观点新媒体了解,新郑出(2022)11号(网)地块位于新区万福路

4.2万余名残疾人有了专属辅助器具

市残联辅助器具中心为我提供的这辆轮椅,可以躺可以坐,时间长也不太累。由于交通事故导致高位截瘫,张家口市桥东区重度肢体残疾人边海卧病

大庆航空救援支队张家口驻防队伍圆满完成任务

近日,在跨省驻防460余天,圆满完成北京2022年冬奥会和冬残奥会张家口赛区森林防灭火、应急救援等安保任务后,大庆航空救援支队张家口驻防

张家口宣化区不动产登记中心全面提升登记服务工作效率

在工作人员的指引下,半个小时就办完了,没想到这么方便。近日,在宣化区不动产登记中心,前来办理房屋抵押手续的市民孙淑苗高兴地对记者说

x 广告

Copyright   2015-2022 起点地质网版权所有  备案号:皖ICP备2022009963号-12   联系邮箱: 39 60 29 14 2@qq.com