生成SQL以及SQL日志

最后更新:2023-11-15 05:30:20 | 状态:未完成
文档中有错误或没说明白的请到【】里说一下,多谢指正
在SQL执行过程中,在控制台或日志文件中会生成带占位符的日志。
如果需要在执行完成后返回SQL,可以在service调用的方法中添加ConfigStore参数
在执行完成后从ConfigStore中获取执行的SQL,
因为执行的SQL可能是多条,所以会返回一个List<Run>集合,
默认情况下Run中的SQL是带占位符的,与占位值分开存储
List<Run> runs = configs.runs();
for (Run run:runs){
    System.out.println("无占位符 sql:"+run.getFinalQuery(false));
    System.out.println("有占位符 sql:"+run.getFinalQuery());
    System.out.println("占位values:"+run.getValues());
}

如果要处理全局日志,可以通过DMLister DDListner以及org.anyline.data.interceptor下的拦截器

如果只需要生成SQL,但不执行,可以调用相应的adapter.buildQueryRun/buildDeleteRun 返回的Run与以上操作相同

因为adapter平时不常用,所以许多人对此不太熟悉,也可以在ConfigStore上调用execute(false)方法
然后调用service.querys()时提供这个ConfigStore这样querys执行后实际SQL并没有执行,但configs.runs可以返回生成的SQL

DataRow row = new DataRow();
row.put("name","zh"+System.currentTimeMillis());
service.insert(table, row);

ConfigStore configs = new DefaultConfigStore().execute(false);//false表示最后实际操作数据库的一步不执行
DataSet set = service.querys(table, configs);
System.out.println(set);//因为最后一步没有执行,所以这里应该输出空集合

List<Run> runs = configs.runs();
for (Run run:runs){
	 System.out.println("无占位符 sql:"+run.getFinalQuery(false));
	 System.out.println("有占位符 sql:"+run.getFinalQuery());
	 System.out.println("占位values:"+run.getValues());
}

最近更新 搜索 提交