Tôi muốn triển khai truy vấn SQL trên biểu đồ thanh hiển thị khối lượng giao dịch hàng ngày trong 10 ngày qua. Ví dụ tôi có cấu trúc bảng này:
TẠO BẢNG `thanh toán_giao dịch` (
`id` int(11) KHÔNG NULL,
`số tiền` int(11) MẶC ĐỊNH NULL,
`created_at` ngày giờ MẶC ĐỊNH NULL,
KHÓA CHÍNH (`id`),
);
Tôi nhận được kết quả ví dụ này (được nhóm theo ngày):
Ngày | Số tiền | Số lượng giao dịch mỗi ngày |
11-11-2018 30 |
12-11-2018 | 230 |
Truy vấn JPA:
Danh sách công khai findAll() {
Chuỗi hql = "CHỌN ngày(created_at) NHƯ cdate, tổng(số tiền) NHƯ số tiền, đếm(id) NHƯ nooftransaction "
+ "TỪ Payment_transactions WHERE ngày(created_at)>=date(now()- khoảng thời gian 10 NGÀY) "
+ "VÀ ngày(created_at)
TypedQuery query = instanceManager.createQuery(hql, Merchants.class);
Danh sách data = query.getResultList();
trả về dữ liệu;
}
Các đối tượng Java:
lớp công khai DashboardDTO {
ngày riêng tư;
số tiền int riêng tư;
số int riêng_of_transactions;
Bảng điều khiển công khaiDTO(Ngày ngày, số tiền int, số int_of_giao dịch) {
this.date = ngày;
số tiền này = số tiền;
this.number_of_transactions = number_of_transactions;
}
Ngày công khai getDate() {
ngày trở về;
}
public void setDate(Ngày ngày) {
this.date = ngày;
}
công khai int getAmount() {
số tiền hoàn lại;
}
public void setAmount(int money) {
số tiền này = số tiền;
}
công khai int getNumber_of_transactions() {
trả về số_of_giao dịch;
}
public void setNumber_of_transactions(int number_of_transactions) {
this.number_of_transactions = number_of_transactions;
}
}
Làm thế nào để thực hiện truy vấn một cách chính xác? Kết quả tôi muốn nhận được là Danh sách
Không sử dụng thực thể?
Cách đơn giản là@Entity
,@Id
Thêm vào của bạnBảng điều khiểnDTO
và làm cho bí danh sql gốc của bạn khớp với tên thuộc tính của DTO.
@Entity
lớp công khai DashboardDTO {
@Id
ngày riêng tư cdate;
số tiền int riêng tư;
số int riêng tưOfTransactions;
...
}
Danh sách công khai findAll() {
Chuỗi hql = "CHỌN ... NHƯ cdate, ... NHƯ số tiền, ... NHƯ số_of_giao dịch TỪ ...";
trả về instanceManager.createNativeQuery(hql, DashboardDTO.class).getResultList();
}
Tôi là một lập trình viên xuất sắc, rất giỏi!