当前位置: 首页 > news >正文

网站在线考试答题系统怎么做/免费b站在线观看人数在哪儿

网站在线考试答题系统怎么做,免费b站在线观看人数在哪儿,手机网站 html5,杭州手机网站开发原创不易,未经允许,请勿转载。 go-zero提供的代码生成器里面,没有提供orm框架操作,但是提供了遍历的缓存操作。但是gorm框架的话,没有比较好的缓存插件,虽然有一个gcache,但不支持gorm2.0版本。 所以我打算…

原创不易,未经允许,请勿转载。

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).Statement
stmt.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
}

如果这篇文章对您有所帮助,麻烦点个一键三连。

原创不易,未经允许,请勿转载。

博客主页:https://xiaojujiang.blog.csdn.net/

http://www.jmfq.cn/news/4999897.html

相关文章:

  • 民治做网站联系电话/合肥seo整站优化网站
  • 网站设计程序/网络推广怎么做?
  • 网站建设平台方案/怎么开通百度推广账号
  • 潍坊人才招聘网/杭州seo全网营销
  • asp.net做网站的流程/静态网页制作
  • 做网站来钱快/网店推广的渠道有哪些
  • 做药的文献一般在哪些网站查找/关键词优化精灵
  • 自适应网站的图做多大 怎么切/关键字挖掘机爱站网
  • 做音乐网站的目地/中国足彩网竞彩推荐
  • 福州工厂网站建设定制服务/专业做网站设计
  • c web网站开发浏览器/广州网站制作公司
  • 投放广告网站/宁波营销型网站建设优化建站
  • 开网站做商城怎么样/哪里可以接广告
  • 长春网站建设seo/百度搜索大数据查询
  • 网站收录申请/百度搜索什么关键词排名
  • wap手机网站建设公司/沈阳网站优化
  • 做王境泽表情的网站/网店搜索引擎优化的方法
  • 个人网站需要买服务器吗/广州专门做seo的公司
  • 国内python 做的网站/东莞谷歌推广公司
  • 大丰哪家专业做网站/商业软文
  • 合肥瑶海区网站建设价格/百度平台商家我的订单查询
  • 比较好看的网站设计/百度app营销软件
  • 海南省建设网站的公司/百度一下就知道官方网站
  • 宁国市网站关键词优化外包/全网营销国际系统
  • 苏州网站排名/seo翻译
  • 做啥英文网站赚钱/旅行网站排名前十名
  • 前端网站建设插件/友链交换网站源码
  • 有没有免费的网站空间/优化疫情防控 这些措施你应该知道
  • 网站域名怎么进行实名认证/seo搜索引擎优化工资
  • 做视频网站注意什么/网络营销到底是干嘛的