返回顶部
首页 > 资讯 > 精选 >gorm怎么整合进go-zero
  • 208
分享到

gorm怎么整合进go-zero

2023-06-29 13:06:43 208人浏览 薄情痞子
摘要

本篇内容主要讲解“gORM怎么整合进Go-zero”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“gorm怎么整合进go-zero”吧!go-zero提供的代码生成器里面,没有提供orm框架操作,

本篇内容主要讲解“gORM怎么整合进Go-zero”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“gorm怎么整合进go-zero”吧!

go-zero提供的代码生成器里面,没有提供orm框架操作,但是提供了遍历的缓存操作。但是gorm框架的话,没有比较好的缓存插件,虽然有一个GCache,但不支持gorm2.0版本。

所以我打算把这两个结合起来。在gorm官方文档中提到了一个接口,可以获取到生成的sql语句。

所以可以利用gorm当作一个sql语句的生成器,把生成后的sql语句放到go-zero生成的模板中去执行。

gorm中的sql生成器

stmt := DB.Session(&Session{DryRun: true}).First(&user, 1).Statementstmt.SQL.String() //=> SELECT * FROM `users` WHERE `id` = $1 ORDER BY `id`stmt.Vars         //=> []interface{}{1}

整合到go-zero中的效果如下
调用GeneralSQL,使用gorm生成sql后,去执行

func (m *defaultJojUserModel) FindOne(id int64) (*JojUser, error) {jojUsercenterJojUserIdKey := fmt.Sprintf("%s%v", cacheJojUsercenterJojUserIdPrefix, id)var resp JojUsererr := m.QueryRow(&resp, jojUsercenterJojUserIdKey, func(conn sqlx.SqlConn, v interface{}) error {query, values := m.GeneralSQL(func(tx *gorm.DB) *gorm.DB {return tx.First(&resp, id)})return conn.QueryRow(v, query, values...)})switch err {case nil:return &resp, nilcase sqlc.ErrNotFound:return nil, ErrNotFounddefault:return nil, err}}func (m *defaultJojUserModel) GeneralSQL(queryFn func(tx *gorm.DB) *gorm.DB) (string, []interface{}) {tx := queryFn(m.gormDB.Session(&gorm.Session{DryRun: true}))stmt := tx.Statementreturn stmt.SQL.String(), stmt.Vars}

关于效率的问题,做了一个简单的测试,使用gorm生成sql的话,生成1e5次耗时304.1878ms

type ArticleComment struct {Id              int              `JSON:"id"`Content         string           `json:"content"`ReplyComment    *ArticleComment  `json:"replyToComment"`  // 该评论回复的评论ParentCommentId int              `json:"parentCommentId"` // 父评论IdChildComment    []ArticleComment `json:"childComment"`    //以该评论未父节点的所有评论CreateTime      string           `json:"createTime"`      // 回复时间}func main() {begin := time.Now()for i := 0; i < 100000; i++ {GeneralSQL(func(tx *gorm.DB) *gorm.DB {return tx.Find(&Article{}, []int{1, 2})})}end := time.Now()fmt.Println(end.Sub(begin))func GeneralSQL(queryFn func(tx *gorm.DB) *gorm.DB) (string, []interface{}) {tx := queryFn(db.Session(&gorm.Session{DryRun: true}))stmt := tx.Statementreturn stmt.SQL.String(), stmt.Vars

到此,相信大家对“gorm怎么整合进go-zero”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: gorm怎么整合进go-zero

本文链接: https://lsjlt.com/news/324996.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • gorm怎么整合进go-zero
    本篇内容主要讲解“gorm怎么整合进go-zero”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“gorm怎么整合进go-zero”吧!go-zero提供的代码生成器里面,没有提供orm框架操作,...
    99+
    2023-06-29
  • gorm整合进go-zero的实现方法
    go-zero提供的代码生成器里面,没有提供orm框架操作,但是提供了遍历的缓存操作。但是gorm框架的话,没有比较好的缓存插件,虽然有一个gcache,但不支持gorm2.0版本。...
    99+
    2024-04-02
  • SpringBoot中怎么对Shiro进行整合
    本篇内容介绍了“SpringBoot中怎么对Shiro进行整合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原生的整合创建项目创建一个 Sp...
    99+
    2023-06-08
  • SpringBoot怎么进行整合Druid数据源
    今天小编给大家分享一下SpringBoot怎么进行整合Druid数据源的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.自定...
    99+
    2023-07-02
  • 使用spring怎么对mybatis进行整合
    本篇文章为大家展示了使用spring怎么对mybatis进行整合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 数据库连接配置信息jdbc.properties#mysql version dat...
    99+
    2023-05-31
    spring mybatis
  • 怎么对struts、spring与hibernate进行整合
    怎么对struts、spring与hibernate进行整合?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。准备三个框架结合的lib包Spring3结合Struts2的步骤如下:...
    99+
    2023-05-31
    struts hibernate spring
  • 使用SpringMVC怎么对Swagger进行整合
    这篇文章将为大家详细讲解有关使用SpringMVC怎么对Swagger进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。配置引入相关jar包:<dependency>&nbs...
    99+
    2023-05-31
    springmvc swagger
  • 使用Spring boot怎么对Mybatis进行整合
    这篇文章将为大家详细讲解有关使用Spring boot怎么对Mybatis进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、文件结构DataBaseConfiguration.Jav...
    99+
    2023-05-31
    springboot mybatis
  • Python怎么对多个sheet表进行整合
    这篇文章主要介绍“Python怎么对多个sheet表进行整合”,在日常操作中,相信很多人在Python怎么对多个sheet表进行整合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么对多个shee...
    99+
    2023-06-30
  • Spark怎么进行数据交互和整合
    Spark可以通过多种方式进行数据交互和整合,以下是一些常用的方法: 使用Spark的DataFrame API:Spark D...
    99+
    2024-03-14
    Spark
  • Go怎么整合captcha实现验证码功能
    这篇“Go怎么整合captcha实现验证码功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go怎么整合captcha实现验...
    99+
    2023-07-05
  • Go框架三件套Gorm、Kitex、Hertz怎么使用
    本篇内容介绍了“Go框架三件套Gorm、Kitex、Hertz怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!三件套介绍Gorm、Ki...
    99+
    2023-07-05
  • go语言gorm怎么实现mysql存储图片
    在Go语言中使用GORM实现MySQL存储图片可以通过以下步骤实现: 定义一个结构体来表示图片信息,包括图片的名称、路径、大小等信...
    99+
    2024-04-09
    go语言 mysql
  • 使用Spring怎么对Web项目进行整合
    今天就跟大家聊聊有关使用Spring怎么对Web项目进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 概述1.整合目的将所有对象的创建与管理任务交给Spring容器,降低程序...
    99+
    2023-05-31
    spring web
  • go文件框架和shell: 如何优雅地进行整合?
    随着信息技术的不断发展,人们对于软件开发的要求也越来越高。在开发软件的过程中,往往会用到不同的工具和框架。在本文中,我们将会探讨如何在Go文件框架和Shell之间进行优雅的整合,以提高软件开发的效率和质量。 一、Go文件框架的介绍 Go语言...
    99+
    2023-11-10
    文件 框架 shell
  • go zero微服务高在请求量下怎么优化
    本文小编为大家详细介绍“go zero微服务高在请求量下怎么优化”,内容详细,步骤清晰,细节处理妥当,希望这篇“go zero微服务高在请求量下怎么优化”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-02
  • SpringBoot怎么整合Kafka
    本文小编为大家详细介绍“SpringBoot怎么整合Kafka”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么整合Kafka”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • Springboot怎么整合https
    本篇内容介绍了“Springboot怎么整合https”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 简介HTTP是不安全的,我们需要给它...
    99+
    2023-06-08
  • SpringBoot怎么整合EasyExcel
    这篇文章主要介绍“SpringBoot怎么整合EasyExcel”,在日常操作中,相信很多人在SpringBoot怎么整合EasyExcel问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot怎...
    99+
    2023-06-21
  • SpringBoot怎么整合SpringDataJPA
    本篇内容主要讲解“SpringBoot怎么整合SpringDataJPA”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合SpringDataJPA”吧!目录Spring...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作