@Override @SneakyThrows public TableMetadata parse(String objectName) { Map<String, Object> param = new HashMap<>(); param.put("table", objectName); Map<String, Object> tableMetaMap = sqlExecutor.single(getSelectTableMetaSql(), param); if (tableMetaMap == null) { return null; } TableMetadata table = new TableMetadata(); table.setName(objectName); table.setComment((String) tableMetaMap.getOrDefault("comment", "")); List<ColumnMetadata> columns = sqlExecutor.list(getSelectTableColumnsSql(), param, wrapper); table.setColumns(columns); return table; }
default Map<String, Object> single(SQL sql) throws SQLException { return single(sql, mapWrapper); }
default Map<String, Object> single(SQL sql) throws SQLException { return single(sql, mapWrapper); }
default Map<String, Object> single(String sql, Object params) throws SQLException { return single(new SimpleSQL(sql, params)); }
default Map<String, Object> single(String sql) throws SQLException { return single(new SimpleSQL(sql)); }
default Map<String, Object> single(String sql, Object params) throws SQLException { return single(new SimpleSQL(sql, params)); }
default Map<String, Object> single(String sql) throws SQLException { return single(new SimpleSQL(sql)); }
@Override public boolean tableExists(String name) { try { Map<String, Object> param = new HashMap<>(); param.put("table", name); Map<String, Object> res = sqlExecutor.single(new SimpleSQL(getTableExistsSql(), param), new LowerCasePropertySimpleMapWrapper()); return res.get("total") != null && StringUtils.toInt(res.get("total")) > 0; } catch (SQLException e) { throw new RuntimeException(e); } }
@Override public boolean tableExists(String name) { try { Map<String, Object> param = new HashMap<>(); param.put("table", name); Map<String, Object> res = sqlExecutor.single(new SimpleSQL(getTableExistsSql(), param), new LowerCasePropertySimpleMapWrapper()); return res.get("total") != null && StringUtils.toInt(res.get("total")) > 0; } catch (SQLException e) { throw new RuntimeException(e); } }
@Override @SneakyThrows public TableMetadata parse(String objectName) { Map<String, Object> param = new HashMap<>(); param.put("table", objectName); Map<String, Object> tableMetaMap = sqlExecutor.single(getSelectTableMetaSql(), param); if (tableMetaMap == null) { return null; } TableMetadata table = new TableMetadata(); table.setName(objectName); table.setComment((String) tableMetaMap.getOrDefault("comment", "")); List<ColumnMetadata> columns = sqlExecutor.list(getSelectTableColumnsSql(), param, wrapper); table.setColumns(columns); return table; }
@Override @SneakyThrows public RDBTableMetaData parse(String name) { if (!tableExists(name)) return null; RDBTableMetaData metaData = new RDBTableMetaData(); metaData.setName(name); metaData.setAlias(name); Map<String, Object> param = new HashMap<>(); param.put("table", name); List<RDBColumnMetaData> metaDatas = sqlExecutor.list(new SimpleSQL(getTableMetaSql(name), param), new RDBColumnMetaDataWrapper()); metaDatas.forEach(metaData::addColumn); Map<String, Object> comment = sqlExecutor.single(new SimpleSQL(getTableCommentSql(name), param), new LowerCasePropertySimpleMapWrapper()); if (null != comment && comment.get("comment") != null) { metaData.setComment(String.valueOf(comment.get("comment"))); } return metaData; }
@Override @SneakyThrows public RDBTableMetaData parse(String name) { if (!tableExists(name)) return null; RDBTableMetaData metaData = new RDBTableMetaData(); metaData.setName(name); metaData.setAlias(name); Map<String, Object> param = new HashMap<>(); param.put("table", name); List<RDBColumnMetaData> metaDatas = sqlExecutor.list(new SimpleSQL(getTableMetaSql(name), param), new RDBColumnMetaDataWrapper()); metaDatas.forEach(metaData::addColumn); Map<String, Object> comment = sqlExecutor.single(new SimpleSQL(getTableCommentSql(name), param), new LowerCasePropertySimpleMapWrapper()); if (null != comment && comment.get("comment") != null) { metaData.setComment(String.valueOf(comment.get("comment"))); } return metaData; }
@Override public T single() throws SQLException { QueryParam param = this.queryParam.clone(); Map<String, Object> context = null; boolean supportBefore = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); boolean supportDone = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); if (supportBefore || supportDone) { context = table.getDatabase().getTriggerContextRoot(); context.put("table", table); context.put("database", table.getDatabase()); context.put("param", param); context.put("type", "single"); } if (supportBefore) { trigger(Trigger.select_before, context); } if (!param.isForUpdate()) param.doPaging(0, 1); SQL sql = render.render(table.getMeta(), param); T data = sqlExecutor.single(sql, objectWrapper); if (supportDone) { context.put("data", data); trigger(Trigger.select_done, context); } return data; }
@Override public int total() throws SQLException { QueryParam param = this.queryParam.clone(); Map<String, Object> context = null; boolean supportBefore = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); boolean supportDone = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); if (supportBefore || supportDone) { context = table.getDatabase().getTriggerContextRoot(); context.put("table", table); context.put("database", table.getDatabase()); context.put("param", param); context.put("type", "total"); } if (supportBefore) { trigger(Trigger.select_before, context); } SQL sql = totalRender.render(table.getMeta(), param); TotalWrapper totalWrapper = new TotalWrapper(); sqlExecutor.single(sql, totalWrapper); if (supportDone) { context.put("total", totalWrapper.getTotal()); trigger(Trigger.select_done, context); } return totalWrapper.getTotal(); }
@Override public T single() throws SQLException { QueryParam param = this.queryParam.clone(); Map<String, Object> context = null; boolean supportBefore = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); boolean supportDone = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); if (supportBefore || supportDone) { context = table.getDatabase().getTriggerContextRoot(); context.put("table", table); context.put("database", table.getDatabase()); context.put("param", param); context.put("type", "single"); } if (supportBefore) { trigger(Trigger.select_before, context); } if (!param.isForUpdate()) param.doPaging(0, 1); SQL sql = render.render(table.getMeta(), param); T data = sqlExecutor.single(sql, objectWrapper); if (supportDone) { context.put("data", data); trigger(Trigger.select_done, context); } return data; }
@Override public int total() throws SQLException { QueryParam param = this.queryParam.clone(); Map<String, Object> context = null; boolean supportBefore = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); boolean supportDone = !triggerSkip && getTableMeta().triggerIsSupport(Trigger.select_before); if (supportBefore || supportDone) { context = table.getDatabase().getTriggerContextRoot(); context.put("table", table); context.put("database", table.getDatabase()); context.put("param", param); context.put("type", "total"); } if (supportBefore) { trigger(Trigger.select_before, context); } SQL sql = totalRender.render(table.getMeta(), param); TotalWrapper totalWrapper = new TotalWrapper(); sqlExecutor.single(sql, totalWrapper); if (supportDone) { context.put("total", totalWrapper.getTotal()); trigger(Trigger.select_done, context); } return totalWrapper.getTotal(); }