Dbunit

   今天做项目时,遇到一个很头痛的问题:使用dbunit的querryRunner.query方法实现模糊查询时,List集合一直为空,研究半天才找到问题:sql语句中like后面那个参数,在进行调用时不能添加单引号。


public List<Food> findByName(PageBean<Food> pb) {
String sql="select * from food where foodName like ?";

try {

return JdbcUtils.getQueryRunner().query(sql, new BeanListHandler<Food>(Food.class),"%"+pb.getCondition().getFoodName()+"%");
} catch (Exception e) {
throw new RuntimeException(e);
}
}

   mysql数据库中模糊查询like后面是要加单引号的,具体原理我也不清楚,反正不叫单引号就对了。

### DBUnit介绍 DBUnit 是一个基于 JUnit 扩展的数据库测试框架,用于在软件开发过程中对数据库相关操作进行单元测试和集成测试。它可以帮助开发者在测试环境中创建、操作和验证数据库数据,确保数据库操作的正确性和稳定性。DBUnit 支持多种数据库,如 MySQL、Oracle、PostgreSQL 等,能够模拟真实的数据库环境,使得测试更贴近实际应用场景。 ### 功能特点 - **数据填充**:DBUnit 可以方便地将预先定义好的数据插入到数据库中,用于测试不同的数据场景。例如,在测试用户注册功能时,可以使用 DBUnit 插入不同的用户数据,模拟各种注册情况。 - **数据验证**:能够对数据库中的数据进行验证,确保测试前后数据的一致性和正确性。在执行某个数据库操作后,可以使用 DBUnit 验证操作结果是否符合预期。 - **事务管理**:支持事务管理,在测试过程中可以使用事务来保证测试数据的独立性和可恢复性。如果测试失败,可以通过回滚事务来恢复数据库的原始状态。 - **多种数据格式支持**:支持多种数据格式,如 XML、CSV 等,方便开发者根据不同的需求选择合适的数据格式来存储测试数据。 ### 使用方法 以下是使用 DBUnit 进行数据库测试的基本步骤: 1. **添依赖**:在项目中添 DBUnit 的依赖。如果使用 Maven 项目,可以在 `pom.xml` 中添以下依赖: ```xml <dependency> <groupId>org.dbunit</groupId> <artifactId>dbunit</artifactId> <version>2.7.3</version> </dependency> ``` 2. **准备测试数据**:创建测试数据文件,如 XML 格式的文件。示例 XML 文件 `testData.xml` 内容如下: ```xml <dataset> <user id="1" name="John" age="25" /> <user id="2" name="Jane" age="30" /> </dataset> ``` 3. **编写测试代码**:以下是一个简单的 Java 测试代码示例: ```java import org.dbunit.Assertion; import org.dbunit.DBTestCase; import org.dbunit.PropertiesBasedJdbcDatabaseTester; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.junit.Test; import java.io.FileInputStream; public class DatabaseTest extends DBTestCase { public DatabaseTest(String name) { super(name); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "com.mysql.jdbc.Driver"); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:mysql://localhost:3306/testdb"); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "root"); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "password"); } @Override protected IDataSet getDataSet() throws Exception { return new FlatXmlDataSetBuilder().build(new FileInputStream("testData.xml")); } @Test public void testDatabaseOperation() throws Exception { // 执行数据库操作 // ... // 获取实际的数据库表数据 IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("user"); // 获取期望的数据库表数据 IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(new FileInputStream("expectedData.xml")); ITable expectedTable = expectedDataSet.getTable("user"); // 验证数据 Assertion.assertEquals(expectedTable, actualTable); } } ``` ### 应用场景 - **单元测试**:在开发数据库相关的功能时,使用 DBUnit 进行单元测试,确保每个数据库操作方法的正确性。在测试用户登录功能时,可以使用 DBUnit 插入不同的用户数据,测试登录逻辑。 - **集成测试**:在系统集成测试阶段,使用 DBUnit 来验证不同模块之间的数据库交互是否正常。在测试订单管理系统和库存管理系统的集成时,可以使用 DBUnit 来模拟不同的订单和库存数据,测试两个系统之间的数据同步和一致性。 - **数据迁移测试**:在进行数据库迁移时,使用 DBUnit 来验证迁移前后数据的一致性和完整性。在将数据从旧的数据库迁移到新的数据库时,可以使用 DBUnit 来比较迁移前后的数据是否一致。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值