我正在使用@BindBean與sql查詢綁定。 我可以看到使用「org.skife.jdbi.v2」:TRACE只會給我帶參數的查詢爲「?」任何想法,我可以打印所有?如何爲Dropwizard應用程序記錄/打印查詢和參數?
1
A
回答
0
您可以通過編寫SqlCustomizer來記錄sql。
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.SqlStatementCustomizer;
import org.skife.jdbi.v2.sqlobject.SqlStatementCustomizerFactory;
import org.skife.jdbi.v2.sqlobject.SqlStatementCustomizingAnnotation;
import org.skife.jdbi.v2.tweak.StatementCustomizer;
import java.lang.annotation.*;
import java.lang.reflect.Method;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@SqlStatementCustomizingAnnotation(LogSqlFactory.Factory.class)
public @interface LogSqlFactory {
static class Factory implements SqlStatementCustomizerFactory {
@Override
public SqlStatementCustomizer createForMethod(Annotation annotation, Class sqlObjectType, Method method) {
return null;
}
@Override
public SqlStatementCustomizer createForType(Annotation annotation, Class sqlObjectType) {
return q -> q.addStatementCustomizer(new StatementCustomizer() {
@Override
public void beforeExecution(PreparedStatement stmt, StatementContext ctx) throws SQLException {
System.out.println(stmt.toString());
}
@Override
public void afterExecution(PreparedStatement stmt, StatementContext ctx) throws SQLException { }
@Override
public void cleanup(StatementContext ctx) throws SQLException { }
});
}
@Override
public SqlStatementCustomizer createForParameter(Annotation annotation, Class sqlObjectType, Method method, Object arg) {
return null;
}
}
}
只包含這個註釋並在SqlObject中使用它。你的情況如果使用自定義記錄器進行記錄,然後beforeExecution方法使用此批註這樣,
@LogSqlFactory
public inteface myinteface{
@SqlQuery("select :c1 from tablename where cond = :cd")
String returnMeValue(@Bind("c1") String c1, @Bind("cd") Integer cd);
}
。
0
您是否使用Dropwizard的DBIFactory?它將JDBI配置爲以開箱即用的方式登錄。
相關問題
- 1. 如何記錄或打印被調用的python elasticsearch-dsl查詢
- 2. 如何在查詢提示參數值時打開記錄集?
- 3. 如何打印存儲過程中調用的參數和查詢?
- 4. 在Dropwizard應用程序中關閉對包的日誌記錄
- 5. 如何讓數和單查詢記錄
- 6. 如何部署dropwizard應用程序
- 7. 角2 - 刷新查詢參數打破我的應用程序
- 8. Dapper.net:如何使用參數值打印查詢
- 9. 如何有效地存儲記錄爲灰燼查詢參數
- 10. 如何從iPhone應用程序打印?
- 11. MS Access參數查詢將不打印
- 12. 如何在Dropwizard 1.0.2中使用LoggingFeature打印服務器響應?
- 13. 打印記錄
- 14. 如何使用Smarty打印記錄集?
- 15. 查詢的MongoDB爲參數和返回記錄與唯一ID
- 16. 如何從Web應用程序打印收據打印機?
- 17. 如何打印wordpress查詢?
- 18. 在unix中查找進程和打印應用程序名稱
- 19. 如何使用Nginx和dropwizard部署angularjs應用程序前端
- 20. 如何使用Swashbuckle記錄查詢字符串參數?
- 21. 打印應用程序(UWP)
- 22. PHP如何使用SUM和數學運算符打印查詢
- 23. 記錄SQL的查詢參數值
- 24. Javascript ADO記錄集打開方法無效。參數化查詢
- 25. .NET Web應用程序 - 如何查找登錄用戶的數據庫記錄?
- 26. 查詢返回的所有記錄,如果參數爲null
- 27. 如何用java應用程序記錄oracle的查詢執行時間?
- 28. 用Javascript打印記錄
- 29. 如何從Cocoa應用程序創建「打印實用程序」?
- 30. 如何從Android應用程序打印數據到WIFI打印機?
沒有爲我工作 –