如何在JDBI sql api中打印@SqlQuery批注
发布时间:2020-05-24 19:26:15 所属栏目:MsSql 来源:互联网
导读:我想知道jdbi sql api处理sql查询究竟是什么用于调试目的. 我的接口类如下 public inteface myinteface{ @SqlQuery(select :c1 from tablename where cond = :cd) String returnMeValue(@Bind(c1) String c1, @Bind(cd) Integer
|
我想知道jdbi sql api处理sql查询究竟是什么用于调试目的.
public inteface myinteface{
@SqlQuery("select :c1 from tablename where cond = :cd")
String returnMeValue(@Bind("c1") String c1,@Bind("cd") Integer cd);
}
然后在另一个类中调用String result = myinterfaceclassobject.returnMeValue(“Name”,1); 我没有得到预期的答案所以我想看看实际上是什么进入sql查询.那么有什么方法可以获得最终处理的查询吗? 解决方法您可以通过编写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,Method method,Object arg) {
return null;
}
}
}
只需包含此注释并在SqlObject中使用它.在你的情况下使用这样的注释, @LogSqlFactory
public inteface myinteface{
@SqlQuery("select :c1 from tablename where cond = :cd")
String returnMeValue(@Bind("c1") String c1,@Bind("cd") Integer cd);
}
如果使用自定义记录器进行日志记录,则使用beforeExecution方法. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 来自INNER JOIN的SQL计数
- 数据库设计 – 可视化映射mysql数据库模式
- jsf – 我应该如何以及何时从数据库为h:dataTable加载模型
- sql-server – 如何按列值返回前100行,然后将theese前100行
- SQL Server Management Studio Express和MySQL?
- sql-server – SQL Server中的时间格式
- SQL Server SQL 提权 常用命令
- 如何在PL / SQL中将日期格式从MM / DD / YYYY更改为YYYY-MM
- mysql随机查询若干条数据的方法
- SQL Server使用cmd命令行窗口操作SqlServer的方法
