引數化之從資料庫提取資料元件詳細解析(十)
1)“配置元件”->“JDBC Connection Configuration”
精簡版:
Variable Name:連線池名稱
Database URL:jdbc:mysql://host:port/db(jdbc:mysql://ip地址:埠號/資料庫名稱)
JDBC Driver class:com.mysql.jdbc.Driver
username:連線資料庫的使用者名稱(如root)
password:連線資料庫的密碼
詳細版:
1.Variable Name:資料庫的型別;
2.MaxNumber of Connection: 資料庫最大連結數;
3.Max Wait(ms):連線等待時長;
4.Time Between Eviction Runs(ms):連線時長;
5.Auto Commet:自動提交;
6.Transaction Isolation: 事務間隔級別設定;
(1)TRANSACTION_NODE 事務節點 、
(2)TRANSACTION_READ_UNCOMMITTED事務未提交讀、
(3)TRANSACTION_READ_COMMITTED事務已提交讀 、
(4)TRANSACTION_SERIALIZABLE事務序列化 、
(5)DEFAULT預設、
(6)TRANSACTION_REPEATABLE_READ事務重複讀、
7.test while idle :連線空閒時是否從連線池中去除;
8.soft min Evictable idle time(ms):檢驗時間間隔;
9.Validation Query:驗證查詢,檢驗連線是否有效(不同資料庫型別不同);
10.JDBCDriver Class: JDBC的類,如org.gjt.mm.mysql.Driver ;
11.Usename,password :使用者名稱密碼;
12.Database URL:資料庫地址(格式:
jdbc:mysql://ipaddress:3306/dbname?characterEncoding=utf-8&autoReconnect=true&rewriteBatchedStatements=true&socketTimeout=30000&connectTimeout=3000)
2) “Sampler”->“JDBC Request”
1)Variable Name:連線池名稱
注意:該值要和JDBC Connection Configuration中配置的Variable Name值對應,否則會提示:No pool found named: 'pool12', ensure Variable Name matches Variable Name of JDBC Connection Configuration;
2)Query Type:預設為Select Statement
含變數的sql查詢,選擇Prepared Select Statement
a)傳遞的引數值是常量,如圖傳遞2個變數,多個變數使用” , “ 分隔。這裡假如你有資料是int型別的,也要在Parameter types 那裡標示為varchar型別,否則無法執行。
b)傳遞的引數值是變數,使用${變數名}的方式
C) sql語句是insert 語句,用Callabs Statement
3)Query:輸入sql語句,注意不要加分號
4)Parameter types:變數的型別varchar,如果是int型別,也要寫成varchar
5)Variable names:儲存查詢結果,供後續介面呼叫,注意呼叫時加“_1”
jmeter官網給的解釋是:如果給這個引數設定了值,它會儲存sql語句返回的資料和返回資料的總行數。假如,sql語句返回2行,3列,且variables names設定為A,,C,那麼如下變數會被設定為:
A_#=2 (總行數)
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (總行數)
C_1=第3列, 第1行
C_2=第3列, 第2行
- 如果返回結果為0,那麼A_#和C_#會被設定為0,其它變數不會設定值。
- 如果第一次返回6行資料,第二次只返回3行資料,那麼第一次那多的3行資料變數會被清除。
- 可以使用${A_#}、${A_1}...來獲取相應的值
解析:
column1代表第一列所有的資料,column1_#可以獲取到第一列的行數
column1_n:獲得第一列第n行的資料。
column2和column3的功能類似, 假如我們只需要第一列和第三列的資料,可以寫成column1,,column3,中間的","不可以省略
6)Result Varialbe name:
如果給這個引數設定值,它會建立一個物件變數,儲存所有返回的結果,獲取具體值的方法:columnValue = vars.getObject("resultObject").get(0).get("Column Name")