本次创作灵感来源于:
获取的数据库返回值需要做下一个接口的参数,而我需要的是随机选择一个数据库返回值进行传参。
本文核心是对以下参数进行剖析:
${__V(departmentid_${__Random(1,${count_1})})}
第一步:思路
数据库返回了18个departmentid值,而接口只需要一个departmentId,简单操作可以用${departmentid_1}获取第一条参数值,但是有一个弊端,没有办法模拟用户随机选择一个参数departmentId,而且这种简单操作需要在数据库查询时加上一个ORDER BY department_id DESC
第二步:在第一步的思路上进行改进优化
首先,我们需要先拿到数据库的返回值${departmentid_1};
第三步:
其次,我们希望每次拿到的值不仅仅是第一条数据,而是随机获取,此时考虑来个随机函数Random,并用关联函数${__V()}拼接
;
${__V(departmentid_${__Random(1,7)})}
这个时候用${__Random(1,7)}代替了‘1’,从原来的获取第一条值,到随机获取前7条中的值;
第四步:
数据库返回的值不一定就是7条,有可能多于7条,也有可能少于7条;
我们需要刚刚好是在我们返回的总条数中随机选择;
${__V(departmentid_${__Random(1,${count_1})})}
使用${count_1}代替了‘7’,count是通过sql语句查询时使用COUNT(department_id)计算获得;
在这里,为什么我们只将‘7’替换,而‘1’不变化呢?
JDBC Request查询值的下标是从1开始的,使用0会报错,所以我们必须要保证存在一条数据;