获取Mybatis中的sql
项目中需要获取mapper中的sql语句,方便Influxdb使用,分有参数和无参数
1、有参数
public static String getSql(String id, Object parameterObject){ String sql = factory.getConfiguration().getMappedStatement(id).getBoundSql(parameterObject).getSql(); List<ParameterMapping> parameterMappings = factory.getConfiguration().getMappedStatement(id).getSqlSource().getBoundSql(parameterObject).getParameterMappings(); String val = null; for(ParameterMapping mapping : parameterMappings){ try { val = BeanUtils.getProperty(parameterObject, mapping.getProperty()); } catch (Exception e) { e.printStackTrace(); } sql = sql.replaceFirst("\\?", val); log.debug("mapping: {} pro: {} val:{}", mapping, mapping.getProperty(), val); } return sql;
2、无参数
public static String getSql(String id){ String sql = factory.getConfiguration().getMappedStatement(id).getBoundSql(null).getSql(); return sql; }