成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

go語言gorm獲取索引 go語言調(diào)用so

Go語言使用gorm對MySQL進(jìn)行性能測試

之前寫過了Go語言gorm框架MySQL實踐,其中對gorm框架在操作MySQL的各種基礎(chǔ)實踐,下面分享一下如何使用gorm框架對MySQL直接進(jìn)行性能測試的簡單實踐。

10年積累的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有古雷港免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

這里我使用了一個原始的Go語言版本的 FunTester 測試框架,現(xiàn)在只有一個基本的方法,實在是因為Go語言特性太強(qiáng)了。框架設(shè)計的主要思路之一就是利用Go語言的閉包和方法參數(shù)特性,將一個 func() 當(dāng)做性能測試的主題,通過不斷運(yùn)行這個 func() 來實現(xiàn)性能測試。當(dāng)然還有另外一個思路就是運(yùn)行一個多線程任務(wù)類,類似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象類,這樣可以設(shè)置一些類的屬性,綁定一些測試資源,適配更多的測試場景。

下面演示select的性能測試,這里我用了隨機(jī)ID查詢的場景。

這里我使用從35開始遞增的ID進(jìn)行刪除。

這里使用了select的用例部分,隨機(jī)ID,然后更新name字段,隨機(jī)10個長度的字符串。

這里用到了 FunTester 字段都是隨機(jī)生成。

到這里可以看出,性能測試框架用到的都是gorm框架的基礎(chǔ)API使用,這里MySQL連接池的管理工作完全交給了gorm框架完成,看資料說非常牛逼,我們只需要設(shè)置幾個參數(shù)。這個使用體現(xiàn)很像 HttpClient 設(shè)置 HTTP 連接池類似,這里我們也可以看出這些優(yōu)秀的框架使用起來都是非常簡單的。

PS:關(guān)于gorm的基礎(chǔ)使用的請參考上一期的文章Go語言gorm框架MySQL實踐。

Gorm 高級查詢

越高級,越復(fù)雜的查詢,也同時意味著高耗,但是平時有一些數(shù)據(jù)少,但是業(yè)務(wù)復(fù)雜的場景,可以使用下。 這里主要說明的是 go 中使用 gorm 進(jìn)務(wù)查詢。

有時候代碼是可需要映射到一個 map 結(jié)構(gòu), 不需要映射到一個 結(jié)構(gòu)體中,可以寫成如下:

在涉及并發(fā)的場景,往往需要加鎖互斥,和 Java 類似, Go 中也有加行鎖的方式,加 for update 即可。

一般寫法如下:

示例代碼:

有時候,我們需要進(jìn)行簡單的數(shù)據(jù)統(tǒng)計, 比如查詢到結(jié)果有多少行,

有時候也需要分組統(tǒng)計行數(shù)

有時候我們會使用到數(shù)據(jù)統(tǒng)計的功能, 比如根據(jù)數(shù)據(jù)庫字段 batch_no 進(jìn)行分組,然后統(tǒng)計總金額,總筆數(shù)。

分組查詢統(tǒng)計一般的寫法如下:

代碼示例:

一般來說,很少使用關(guān)聯(lián)查詢,但是如果要使用關(guān)聯(lián)查詢,可以如下:

Scopes 允許你指定常用的查詢,可以在調(diào)用方法時引用這些查詢, 也就是說,可以在查詢中使用函數(shù)。

舉個例子:

在這里插入圖片描述

gorm基本使用

gorm安裝

gorm框架是go的一個數(shù)據(jù)庫連接及交互框架,一般用于連接關(guān)系型數(shù)據(jù)庫。

安裝gorm,使用命令安裝:

go get -u -v github點抗 /jinzhu/gorm

連接數(shù)據(jù)庫

構(gòu)建連接的目標(biāo)為數(shù)據(jù)庫中某一個庫,同大多數(shù)框架一樣使用url進(jìn)行連接,url基本格式:

用戶名:密碼@連接方式(ip:port)/數(shù)據(jù)庫名?參數(shù)

參數(shù)描述:

用戶名 :連接數(shù)據(jù)庫用戶名

密碼 :連接數(shù)據(jù)庫密碼

連接方式 :或稱為訪問協(xié)議,一般為tcp

ip :數(shù)據(jù)庫所在服務(wù)器地址

port :數(shù)據(jù)庫監(jiān)聽端口

數(shù)據(jù)庫名 :數(shù)據(jù)庫中對應(yīng)要連接庫名

參數(shù) :附加數(shù)據(jù)庫參數(shù),根據(jù)數(shù)據(jù)庫不同內(nèi)容不同

確定url后,就可以調(diào)用gorm中參數(shù)進(jìn)行連接數(shù)據(jù)庫操作:

別忘記import語句導(dǎo)入包:

操作完數(shù)據(jù)庫后不要忘了關(guān)閉連接:

表操作

創(chuàng)建表

gorm創(chuàng)建表基于結(jié)構(gòu)體,所以創(chuàng)建表前要先用結(jié)構(gòu)體規(guī)劃表結(jié)構(gòu),這里簡單寫一個結(jié)構(gòu)體,創(chuàng)建表時默認(rèn)結(jié)構(gòu)體第一個字段作為主鍵:

寫好結(jié)構(gòu)體后,調(diào)用創(chuàng)建表語句直接按照結(jié)構(gòu)體結(jié)構(gòu)創(chuàng)建表:

當(dāng)直接創(chuàng)建表時,表名遵循規(guī)范:

1、大寫字母全部小寫,所有位于中間的大寫字母都變成小寫字母并且前面加下劃線,例如UserInfo結(jié)構(gòu)體創(chuàng)建為表名稱為user_infos。

2、上面最后的那個s是因為直接創(chuàng)建表時,名稱最后都會加上一個s。所以上面結(jié)構(gòu)體User創(chuàng)建表后名稱為users。

刪除表

增刪改查

插入數(shù)據(jù)

插入數(shù)據(jù),插入數(shù)據(jù)方法結(jié)構(gòu)使用Create方法:

查詢數(shù)據(jù)

查詢第一條找到的數(shù)據(jù),使用First,該方法返回值仍然為db對象,所以接收數(shù)據(jù)時我們需要先定義一個對應(yīng)表結(jié)構(gòu)的結(jié)構(gòu)體接收數(shù)據(jù):

有First就有Last,同F(xiàn)irst調(diào)用格式一致。

批量查詢,批量查詢使用Find方法,其余參數(shù)結(jié)構(gòu)同F(xiàn)irst或Last相同,只不過傳參時一般傳入數(shù)組參數(shù),當(dāng)然,F(xiàn)irst或Last方法也可以傳入數(shù)組參數(shù),但得到的數(shù)組只有一個數(shù)據(jù),批量查詢操作:

更新數(shù)據(jù)

刪除內(nèi)容

go語言對gorm不固定條件查詢封裝

在寫sql語句時,where的條件主要是 key=1 and key2=2 或者 key=1 or key2=2 這種形式[還有 and與or 混合]。

認(rèn)真分析會發(fā)現(xiàn)條件有 4部分 組成-- 字段名、操作符、查詢值、與前一個條件的關(guān)系[and,or] ,這樣就很容易實現(xiàn)了。下面就是一個說明,為了簡化,其中會默認(rèn)省略一些特征。

啟動項目

訪問測試地址:

帶分頁的地址:

網(wǎng)站名稱:go語言gorm獲取索引 go語言調(diào)用so
文章地址:http://jinyejixie.com/article48/ddieohp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司動態(tài)網(wǎng)站、小程序開發(fā)、網(wǎng)站排名、網(wǎng)站設(shè)計定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
新和县| 荔波县| 綦江县| 象山县| 靖西县| 长岭县| 隆安县| 连山| 昆山市| 商丘市| 万年县| 双牌县| 丰原市| 水富县| 弥渡县| 冷水江市| 朝阳区| 镇坪县| 白银市| 织金县| 揭西县| 汪清县| 福泉市| 古田县| 永宁县| 高阳县| 定日县| 绍兴市| 镇康县| 本溪| 陈巴尔虎旗| 平乡县| 高淳县| 崇阳县| 巩留县| 米泉市| 方正县| 陵川县| 青冈县| 东丽区| 米脂县|