生成SQL以及SQL日志
最后更新:2023-11-15 05:30:20
|
状态:未完成
文档中有错误或没说明白的请到【群】里说一下,多谢指正
文档中有错误或没说明白的请到【群】里说一下,多谢指正
在SQL执行过程中,在控制台或日志文件中会生成带占位符的日志。
如果需要在执行完成后返回SQL,可以在service调用的方法中添加ConfigStore参数
在执行完成后从ConfigStore中获取执行的SQL,
因为执行的SQL可能是多条,所以会返回一个List<Run>集合,
默认情况下Run中的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()); }