This guide shows how to build dashboards in Spring Boot by exposing ClickHouse data as REST APIs for visualization.
1. Create a Table in ClickHouse
CREATE TABLE sales (
id UInt32,
product String,
amount Float64,
order_date Date
) ENGINE = MergeTree() ORDER BY id;
Insert some data for testing.
2. Query Data with JdbcTemplate
List<Map<String, Object>> sales = jdbcTemplate.queryForList(
"SELECT toDate(order_date) AS day, sum(amount) AS total " +
"FROM sales GROUP BY day ORDER BY day"
);
3. Map Results to DTO
public record SalesReport(LocalDate day, Double total) {}
Convert results:
List<SalesReport> reports = sales.stream()
.map(r -> new SalesReport(
(LocalDate) r.get("day"),
(Double) r.get("total")))
.toList();
4. Expose REST Endpoint
@RestController
@RequestMapping("/dashboard")
public class DashboardController {
@GetMapping("/sales")
public List<SalesReport> getSales() {
return reports;
}
}
5. Connect with Frontend
Use any JS charting library (Chart.js, D3, or React) to consume
/dashboard/sales and display graphs.
image quote pre code