1 packagecom.test.jmeter;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.PreparedStatement;6 importjava.sql.SQLException;7
8 importorg.apache.jmeter.config.Arguments;9 importorg.apache.jmeter.protocol.java.sampler.JavaSamplerClient;10 importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;11 importorg.apache.jmeter.samplers.SampleResult;12
13 public class jdbc_jmeter_insert implementsJavaSamplerClient {14 //全局变量
15 PreparedStatement statement;16 Connection conn;17
18 @Override19 publicArguments getDefaultParameters() {20 Arguments arguments = newArguments();21 arguments.addArgument("sql", "insert into itcast_role (name,description) values (?,?)");22 arguments.addArgument("url", "jdbc:mysql://localhost:3306/oa?useUnicode=true&characterEncoding=utf8");23 arguments.addArgument("user", "root");24 arguments.addArgument("password", "123456");25
26 arguments.addArgument("name", "lisi");27 arguments.addArgument("desc", "test");28 returnarguments;29 }30
31 //初始化方法,类似于LR里的init方法,特点是每个用户只执行一次
32 @Override33 public voidsetupTest(JavaSamplerContext context) {34 //注册驱动,告诉Java接下来要链接哪个数据库
35 try{36 Class.forName("com.mysql.jdbc.Driver");37 //建立mysql数据库链接
38 conn = DriverManager.getConnection(context.getParameter("url"),context.getParameter("user"),context.getParameter("password"));39 //把sql进行编译
40 statement = conn.prepareStatement(context.getParameter("sql"));41 } catch(Exception e) {42 e.printStackTrace();43 }44
45 }46
47 //runTest方法,类似LR里的actions方法,特点是每个用户执行多次(循环次数或者持续时间s)
48 @Override49 publicSampleResult runTest(JavaSamplerContext context) {50 SampleResult result = newSampleResult();51 //定义一个事务名称
52 result.setSampleLabel("insert");53 //事务开始
54 result.sampleStart();55 //执行sql之前,先进行参数化
56 try{57 statement.setString(1, context.getParameter("name"));58 statement.setString(2, context.getParameter("desc"));59 int rows =statement.executeUpdate();60 if (rows == 1){61 //事务成功
62 result.setSuccessful(true);63 }else{64 //事务失败
65 result.setSuccessful(false);66 }67 System.out.println("=============================:"+rows);68 } catch(SQLException e) {69 e.printStackTrace();70 }71 //事务结束
72 result.sampleEnd();73 returnresult;74 }75
76 //结束方法,类似于LR里的end方法,特点是每个用户只执行一次
77 @Override78 public voidteardownTest(JavaSamplerContext context) {79 //关闭链接
80 try{81 conn.close();82 } catch(SQLException e) {83 e.printStackTrace();84 }85 }86
87 public static voidmain(String[] args) {88 jdbc_jmeter_insert jmeter = newjdbc_jmeter_insert();89 JavaSamplerContext context = newJavaSamplerContext(jmeter.getDefaultParameters());90 jmeter.setupTest(context);91 jmeter.runTest(context);92 jmeter.teardownTest(context);93 }94
95 }