java - JDBI测试自定义注解生成sql语句
问题描述
我正在寻找在 jdbi 包中测试自定义 SqlStatementCustomizingAnnotation 注释。
http://jdbi.org/#_statement_customizing_annotations
我有以下单元测试,但我看到返回的“customizer”对象是一个 lambda。如何断言我想在自定义注释中生成的 SQL 是我所期望的。如何将“customizer”对象转换为 sql 语句或检查并断言“customizer”对象中的 sql。
SourceEventTimeCustomizerTest
@Test
public void testSourceModifiedQuery(){
SourceModifiedQuery.SourceEventDateTimeCustomizer srcModifiedQuery = new SourceModifiedQuery.SourceEventDateTimeCustomizer();
Annotation annotation = buildSourceModifiedQueryAnnotation();
List<Query> queries = new ArrayList<Query>();
queries.add(QueryHelper.createQuery("source_modified_date_time" , Query.Operator.EQ, "2018-01-01"));
SqlStatementCustomizer customizer = srcModifiedQuery.createForParameter(annotation, DealDao.class, null, queries );
assertNotNull(customizer);
}
SourceEventTimeCustomizer
@Override
public SqlStatementCustomizer createForParameter(final Annotation annotation, final Class sqlObjectType,
final Method method, final Object arg) {
final List<Query> queries = (List<Query>) arg;
final SourceModifiedQuery sourceModifiedQuery = (SourceModifiedQuery) annotation;
final String actualQuery = genQuery(queries, sourceModifiedQuery);
return sqlStatement -> sqlStatement.define(sourceModifiedQuery.value(), actualQuery);
}
解决方案
推荐阅读
- python - “运行直到完成”循环在功能完成后没有结束?
- node.js - 如何使用 NestJS 完成 HTTP 基本身份验证
- spring - Spring Boot 和 JWT - JSESSIONID 允许 REST 请求而不需要 JWT?
- components - 如何将特定的 Svelte 组件导出为具有指定名称的单个类?
- spring-boot - 使用 spring 2 和 jersey 的 rest 服务,无法得到一些消费者的响应
- sql - 查询之间的 SQL 数学运算符
- java - 使用java在mysql数据库中插入日期
- routes - 是否可以在外部服务器上托管 AEM 页面?
- javascript - 与续集的关联
- c# - HTTP 状态码 - 404/NotFound vs 204/NoContent vs 200/Ok