dirtyhand-tester 重新开始测试开发: Quick Dao - 给测试快速操作的 JAVA 库
simonpatrick
·
2023年03月29日
·
3776 次阅读
Quick Dao - 给测试快速操作的 JAVA 库
快速操作数据库: 在 hutool 的基础上做了一些封装
好处: 免去了 mybatis/jpa 等库的各种学习成本,就是 SQL+ 变量
坏处: 可能只适合测试使用,不适合生产环境使用
- 创建连接 Dao
- 直接执行 SQL
- 直接可以绑定变量
- 更具外部给定的输入选择不同的数据源进行操作数据库
下面是一些使用方式的介绍,从测试角度,大家看看这种方式时候测试人员使用吗?欢迎多给点建议
创建连接 Dao
DataSourceSetting setting = DataSourceSetting.builder().
url("jdbc:postgresql://127.0.0.1:7432/test_hub?currentSchema=demo")
.driver("org.postgresql.Driver")
.username("postgres").password("changeit").build();
QuickDao dao = QuickDao.createDao("config/db.setting");
直接执行 SQL
- 直接 SQL
- 占位符方式传递参数
- 绑定变量传递参数
@Test
public void testQuery() {
var queryResult = dao.query("select * from hero");
for (Entity entity : queryResult) {
System.out.println(entity.keySet());
System.out.println(entity.values());
}
}
@Test
public void testQueryWithParameters() {
var queryResult = dao.query("select * from hero where name=?", "test");
for (Entity entity : queryResult) {
System.out.println(entity.keySet());
System.out.println(entity.values());
}
}
@Test
public void testQueryWithBindParams() {
Map<String, Object> params = MapUtil.builder("name", (Object) "test2").build();
var queryResult = dao.query("select * from hero where name=@name",
params);
for (Entity entity : queryResult) {
System.out.println(entity.keySet());
System.out.println(entity.values());
}
}
执行 SQL insert/delete
- 直接输入 SQL 可以直接执行
- 使用 JAVA 类也可以直接操作
@Test
public void testSaveOrInsertEntity() {
Entity e = Entity.create("hero").set("name", "test4")
.set("secret_name", "100").set("age", 9000);
HeroDemoEntity demoEntity = new HeroDemoEntity();
demoEntity.setName("hero");
demoEntity.setAge(10);
demoEntity.setSecret_name("secret_name");
dao.saveOrUpdate(demoEntity,"hero");
dao.saveOrUpdate(e, "hero", "name", "secret_name"); //for upsert error
}
@Test
public void testExecute() {
int count = dao.execute("delete from hero where name='test2'");
System.out.println(count);
}
更具外部给定的输入选择不同的数据源进行操作数据库
- 数据库例连接配置
- SQL 输入 + 变量都是配置
@Test
public void testDaoService() {
String connectConfig = "{\n" +
" \"url\" :\"jdbc:postgresql://127.0.0.1:7432/test_hub\",\n" +
" \"user\":\"postgres\",\n" +
" \"password\": \"changeit\"\n" +
"}";
SqlRequest request = SqlRequest.createRequest("select * from data_sources where name=@name");
String bindvalue = "{\n" +
"\"name\":\"本地测试环境\"\n" +
" }";
request.bindParameterValues(bindvalue);
request.dsConfig(connectConfig);
SqlService service = new SqlService();
SqlQueryResponse response = service.query(request);
System.out.println(JSONUtil.toJsonPrettyStr(response));
}
转载文章时务必注明原作者及原始链接,并注明「发表于 TesterHome 」,并不得对作品进行修改。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。