@Override public String render(String template, StatementContext ctx) { final ExtensionMethod extensionMethod = ctx.getExtensionMethod(); final String originalResult = originalEngine.render(template, ctx); if (extensionMethod == null) { return originalResult; } final StringBuilder query = new StringBuilder(originalResult.length() + 100); query.append("/* "); final String className = extensionMethod.getType().getSimpleName(); if (!className.isEmpty()) { query.append(className).append('.'); } query.append(extensionMethod.getMethod().getName()); query.append(" */ "); query.append(originalResult); return query.toString(); } }
String getStatementName(StatementContext statementContext) { ExtensionMethod extensionMethod = statementContext.getExtensionMethod(); if (extensionMethod != null) { Class<?> type = extensionMethod.getType(); Method method = extensionMethod.getMethod(); String group = type.getPackage().getName(); String name = type.getSimpleName(); return group + "." + name + "." + method.getName(); } else { return "sql.raw." + statementContext.getRawSql(); } } }
default void check() throws Exception { Class<StatementContextExtensionMethodDao> extensionMethodDaoClass = StatementContextExtensionMethodDao.class; Method checkMethod = extensionMethodDaoClass.getMethod("check"); ExtensionMethod extensionMethod = getHandle().getExtensionMethod(); assertThat(extensionMethod.getType()).isEqualTo(extensionMethodDaoClass); assertThat(extensionMethod.getMethod()).isEqualTo(checkMethod); extensionMethod = getHandle().createQuery("select * from something").getContext().getExtensionMethod(); assertThat(extensionMethod.getType()).isEqualTo(extensionMethodDaoClass); assertThat(extensionMethod.getMethod()).isEqualTo(checkMethod); } }
String getStatementName(StatementContext statementContext) { ExtensionMethod extensionMethod = statementContext.getExtensionMethod(); if (extensionMethod != null) { Class<?> type = extensionMethod.getType(); Method method = extensionMethod.getMethod(); String group = type.getPackage().getName(); String name = type.getSimpleName(); return group + "." + name + "." + method.getName(); } else { return "sql.raw." + statementContext.getRawSql(); } } }
default void check() throws Exception { Class<StatementContextExtensionMethodDao> extensionMethodDaoClass = StatementContextExtensionMethodDao.class; Method checkMethod = extensionMethodDaoClass.getMethod("check"); ExtensionMethod extensionMethod = getHandle().getExtensionMethod(); assertThat(extensionMethod.getType()).isEqualTo(extensionMethodDaoClass); assertThat(extensionMethod.getMethod()).isEqualTo(checkMethod); extensionMethod = getHandle().createQuery("select * from something").getContext().getExtensionMethod(); assertThat(extensionMethod.getType()).isEqualTo(extensionMethodDaoClass); assertThat(extensionMethod.getMethod()).isEqualTo(checkMethod); } }