目录
概要
一、“测试计划”添加jar包
二、配置JDBC Connection Configuration(JDBC连接池)
JDBC 请求
传参查询方式
变量传参
预编译查询
查询结果值引用
普通查询引用方式
Result Variable names 值的读取方式
概要
三步连接数据库:
- “测试计划” 里面添加连接数据库的jar包
- “JDBC Connection Configuration” 配置JDBC连接池
- “JDBC Request” 编写SQL语句
一、“测试计划”添加jar包
连接数据库的jar包下载
JDBC for MySQL最新jar包 - 下载,下载后放到jmeter下的lib目录:
接着打开jmeter,在“测试计划”里通过浏览,选择刚放到lib目录下的MySQL的jar包。
二、配置JDBC Connection Configuration(JDBC连接池)
添加连接池:配置元件-JDBC Connection Configuration,正常情况只用修改红色背景部分就行了,其他地方保持默认。
核心配置
- MaxNumberofconnections:最大连接数
- MAXwait:最大等待时间
- AutoCommit:是否自动提交事务
- DataBaseURL:数据库连接地址格式:jdbc:mysql://IP:端口号/数据库名称
- 如consult-service服务连接池:
jdbc:mysql://
{ip}:{port}/{dbname}?allowMultiQueries=true
&characterEncoding=utf8 - 添加?allowMultiQueries=true,是为了能够一次执行多条语句;
- JDBCDriverClass:数据库驱动,选择对应的mysql
- username:数据库用户名
- password:数据库密码
配置红色部分即可:
JDBC 请求
JDBC数讲解
- variable name of pool declared in JDBC connection configuration(和连接池同名)
连接池名字,与要链接的数据库连接池名字保持一致:
Query Type 查询类型
- Select Statement:在需要执行查询语句的时候使用
- Update Statement:执行更新操作的时候用到,包括插入与修改
- Callable Statement:可以调用存储过程,也就是可以有入参、占位符,只要语法正确,任何语句,再多的条数都能支持
- Prepared Select Statement:预编译查询语句
- Prepared Update Statement:预编译更新语句
PS:为什么会有 Prepared Select Statement 的预编译查询语句的类型呢?
因为SQL属于编译型的语音,也就是说SQL是先要编译成机器可执行的文件后再执行的,若进行数据库压测或大批量SQL执行时,会给数据库造成很大的性能损耗,而Prepared Select Statement、Prepared Update Statement预编译是JMeter把SQL编译后再给数据库执行,这样就能大大减少数据库的性能的损耗,下文会介绍怎么使用预编译编写SQL语句。
查询结果接受字段说明
- Parameter values:参数值
- Parameter types:参数类型(需要与数据库里面的对一个字段定义的数据类型保持一致才行)
- Variable names:sql执行结果变量名
- Result variable names:所有结果当做一个对象存储(往下有查询值或许方式讲解)
- Query timeouts:查询超时时间
- Handle results:处理结果集:查询结果借助:sampler -> debug sampler查看变量名;
传参查询方式
变量传参
Select Statement、Update Statement模式下,不可使用占位符(?的方式),可以使用 ${变量名称},引入变量
变量:parameter values、parameter types不用填写,只需在SQL里面填写变量名(非要写也不会报错)。
预编译查询
JMeter中,sql语句带?就是预编译,查询类型要对应选择Prepared Select Statement
为什么会有 Prepared Select Statement 的预编译查询语句的类型呢?
因为SQL属于编译型的语音,也就是说SQL是先要编译成机器可执行的文件后再执行的,若进行数据库压测或大批量SQL执行时,会给数据库造成很大的性能损耗,而Prepared Select Statement、Prepared Update Statement预编译是JMeter把SQL编译后再给数据库执行,这样就能大大减少数据库的性能的损耗,下文会介绍怎么使用预编译编写SQL语句。
查询结果值引用
普通查询引用方式
值储存方式 :不管是查询到一个值还是多个值,查询结果都会在Variable names基础上增加序号储存,而Result variable names被存为一个对象。
Variable names变量引用时,取对应的值对应的变量名:${sql_name_3}
Result Variable names 值的读取方式
result variable names储存的是查询结果的对象,如:
结果是这样展示的:
调用变量的方式:
从sql_order_ids这个对象中,获取第2个id的值:JMeter之BeanShell的变量使用方法
vars.getObject("sql_order_ids").get(2).get("id"));
-- 使用BeanShell函数
${__BeanShell(vars.getObject("sql_order_ids").get(2).get("id"))}