QueryRunner.query----使用时记得带参数

本文介绍了Apache Commons DBUtils中的QueryRunner.query方法的使用,强调在调用时必须传入参数。该方法用于执行SQL查询,结合ResultSetHandler处理查询结果。

UserBean org.apache.commons.dbutils.QueryRunner.query(String sql, ResultSetHandler rsh, Object… params) throws SQLException

Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
		String sql = "select * from t_user where username = ? and password = ?";
		UserBean query = runner.query(sql, new BeanHandler<UserBean>(UserBean.class) , user.getUsername() , user.getPassword());
		return query;
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException accessible: module java.base does not "opens java.lang" to unnamed module @32256e68 2025-10-30 10:35:25 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) 2025-10-30 10:35:25 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) 2025-10-30 10:35:25 at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199) 2025-10-30 10:35:25 at java.base/java.lang.reflect.Method.setAccessible(Method.java:193) 2025-10-30 10:35:25 at org.powermock.reflect.internal.WhiteboxImpl.doGetAllMethods(WhiteboxImpl.java:1499) 2025-10-30 10:35:25 at org.powermock.reflect.internal.WhiteboxImpl.getAllMethods(WhiteboxImpl.java:1473) 2025-10-30 10:35:25 at org.powermock.reflect.internal.WhiteboxImpl.findMethodOrThrowException(WhiteboxImpl.java:853) 2025-10-30 10:35:25 at org.powermock.reflect.internal.WhiteboxImpl.doInvokeMethod(WhiteboxImpl.java:813) 2025-10-30 10:35:25 at org.powermock.reflect.internal.WhiteboxImpl.invokeMethod(WhiteboxImpl.java:681) 2025-10-30 10:35:25 at org.powermock.reflect.Whitebox.invokeMethod(Whitebox.java:401) 2025-10-30 10:35:25 at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.handleException(PowerMockJUnit44RunnerDelegateImpl.java:361) 2025-10-30 10:35:25 ... 40 more 2025-10-30 10:35:29 org.testng.TestNGException: 2025-10-30 10:35:29 Failure in JUnit mode for class cn.com.essence.eaccount.applet.service.AppletLoginServiceTest 2025-10-30 10:35:29 at org.testng.junit.JUnit4TestRunner.start(JUnit4TestRunner.java:114) 2025-10-30 10:35:29 at org.testng.junit.JUnit4TestRunner.run(JUnit4TestRunner.java:70) 2025-10-30 10:35:29 at org.testng.TestRunner$1.run(TestRunner.java:570) 2025-10-30 10:35:29 at org.testng.TestRunner.runJUnitWorkers(TestRunner.java:717) 2025-10-30 10:35:29 at org.testng.TestRunner.privateRunJUnit(TestRunner.java:601) 2025-10-30 10:35:29 at org.testng.TestRunner.run(TestRunner.java:502) 2025-10-30 10:35:29 at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) 2025-10-30 10:35:29 at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) 2025-10-30 10:35:29 at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) 2025-10-30 10:35:29 at org.testng.SuiteRunner.run(SuiteRunner.java:364) 2025-10-30 10:35:29 at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 2025-10-30 10:35:29 at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) 2025-10-30 10:35:29 at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
最新发布
10-31
### 解决 `java.lang.reflect.InaccessibleObjectException` 异常 `java.lang.reflect.InaccessibleObjectException` 通常在 Java 9 及更高版本中出现,因为 Java 9 引入了模块系统,对反射访问进行了更严格的控制。在使用 PowerMock 进行单元测试,反射操作可能会受到模块系统的限制,从而抛出该异常。 #### 解决方案 1. **使用 `@PowerMockIgnore` 注解**:可以使用 `@PowerMockIgnore` 注解来忽略一些类或包,以避免反射访问的限制。例如: ```java import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.modules.testng.PowerMockTestCase; @PowerMockIgnore({"javax.management.*", "javax.xml.*", "javax.net.ssl.*", "org.xml.sax.*", "org.w3c.dom.*", "org.springframework.*", "org.apache.log4j.*", "com.ctrip.framework.*"}) public class YourTestClass extends PowerMockTestCase { // 测试代码 } ``` 这样可以告诉 PowerMock 在测试忽略指定的类和包,减少反射访问的限制[^3]。 2. **配置模块信息**:如果项目使用了 Java 模块系统(`module-info.java`),需要确保在模块信息中允许反射访问。例如: ```java module yourModule { // 允许反射访问 opens your.package.to.reflection to java.base, org.powermock.reflect; } ``` 这样可以明确允许指定的模块对特定包进行反射访问。 ### 解决 `org.testng.TestNGException` 异常 `org.testng.TestNGException` 是 TestNG 框架抛出的异常,可能由多种原因引起,如测试类配置错误、测试方法签名错误等。 #### 解决方案 1. **检查测试类和方法的配置**:确保测试类和测试方法的注解使用正确。例如,测试方法应该使用 `@Test` 注解: ```java import org.testng.annotations.Test; public class YourTestClass { @Test public void yourTestMethod() { // 测试代码 } } ``` 2. **检查依赖版本**:确保 PowerMock 和 TestNG 的版本兼容。不同版本的 PowerMock 和 TestNG 可能存在兼容性问题,建议使用官方推荐的版本组合。 3. **检查测试套件配置**:如果使用了 TestNG 的测试套件(`testng.xml`),确保配置文件正确。例如: ```xml <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="YourTestSuite"> <test name="YourTest"> <classes> <class name="your.package.YourTestClass"/> </classes> </test> </suite> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值