Jmeter的JDBC请求是一个很强大的操作数据库插件,可以实现对数据库的增删改查,可以读取数据库的数据进行参数化

1、添加驱动,确保驱动与数据库版本匹配,否则可能会连不上数据库,本次示例数据库是mysql

驱动下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.16

把下载的驱动包放入jmeter的lib目录下

2、添加jdbc配置文件

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter教程

Variable Name

数据库连接池的名称,jdbc请求时会通过这个名称来读取数据库配置

Connection Pool Connetion:连接池参数配置,基本保持默认,根据需要进行修改;

Max Number of Connections: 最大连接数默认为10;

Max Wait(ms):最大等待时间,单位毫秒;

Time Between Eviction Runs(ms):有空闲的线程数,释放不使用的线程;

Auto Commit:自动提交,默认为true,如修改数据库时,自动commit;

Transaction isolation:事务隔离(默认);

Connection Validation by pool:验证连接池;

Test While idle:

Soft Min Evictable Idle Time(ms):

Validation Query:

Database Connection Configuration:数据库连接配置:

Database URL:数据库连接url;jdbc:mysql://localhost:3306/dbname

JDBC Driver class:数据库驱动;com.mysql.jdbc.Driver

Username:用户

Password:密码

3、添加JDBC采样器

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_02

4、执行请求,通过debug Sampler分析数据

这是查询的结果

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_03

这是debug的信息

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_04

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_05

通过这两张图可以看到

我们分别把查询结果字段的buyer_parent_id和order_sn赋值给jmeter变量user_id和order_no

通过debug可以看到

变量名_#:代表该变量返回的行数

变量名_1,变量名_2,…………,代表每一个变量的值,

根据此规则可以看到

order_no这个变量总共返回了10行数据

分别是order_no_1…………orderno_10,线程组内这些变量是可以直接引用的

user_id返回了10行数据,分别是user_id_1……user_id_10

这是返回结果赋值的两个变量

再看下返回的对象

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_06

5、现在如果要遍历使用这些数据则如下

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_07

添加逻辑控制器仅一次控制器,层级下添加登录和jdbc请求

添加计数器如下,名称为num,由1-10

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_08

查询订单的请求如图

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter学习_09

{"orderSn":"${__V(order_no_${num},)}","pageNum":1,"pageSize":10}

order_Sn是需要查询的订单号

此处用order_no_拼接计数器变量,此处需要使用${__V(,)}

设置线程组循环10次,执行脚本

JMeter元件(四)-取样器-4.3-发送JDBC请求_JMeter教程_10

查看请求可以发现,每一次查询请求传是order_Sn都是不一样的,实现了变量jdbc查询出来的所有订单号