首页 > 解决方案 > 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);
        }

标签: javajdbi

解决方案


推荐阅读