Xuất csv mongodb
Show
Tìm hiểu khuôn khổ Spring.
Khởi động mùa xuân xuất dữ liệu sang ví dụ CSV Chi tiết Viết bởi Nam Hà MinhCập nhật lần cuối vào ngày 04 tháng 9 năm 2020. In Email 1. Mã cho các lớp thực thể và kho lưu trữGiả sử chúng ta có lớp thực thể Người dùng như sau.package net.codejava; import java.util.*; import javax.persistence.*; @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String email; private String password; @Column(name = "full_name") private String fullName; private boolean enabled; @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) @JoinTable( name = "users_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id") ) private SetVà Vai trò lớp thực thể. package net.codejava; import javax.persistence.*; @Entity @Table(name = "roles") public class Role { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String description; // constructors, getter and setters are not shown for brevity }Vì vậy, các trường chúng tôi muốn đưa vào tệp CSV được tạo là. ID người dùng, E-mail, Tên đầy đủ, Vai trò và Đã bật. Và không có gì đặc biệt về các kho lưu trữ, như hình dưới đây. package net.codejava; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository 2. Khai báo phụ thuộc cho Thư viện CSVMặc dù CSV là định dạng tệp đơn giản (các giá trị được phân tách bằng dấu phẩy), nhưng vẫn tốt hơn nhiều nếu sử dụng thư viện CSV chuyên dụng. Trong hướng dẫn này, tôi đang sử dụng SuperCSV – thư viện CSV mã nguồn mở và miễn phí dành cho Java. Vì vậy, hãy khai báo phần phụ thuộc sau trong pom. tệp xml .
3. Mã cho lớp dịch vụpackage net.codejava; import java.util.List; import javax.transaction.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; @Service @Transactional public class UserServices { @Autowired private UserRepository repo; public ListPhương thức method that retrieves all users from the database, as follows: package net.codejava; import java.util.List; import javax.transaction.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; @Service @Transactional public class UserServices { @Autowired private UserRepository repo; public ListThe findAll() trong giao diện Kho lưu trữ người dùng được triển khai bởi Spring Data . Ở đây mình chỉ truyền một đối tượng JpaRepository). Here I just pass a Sort để sắp xếp danh sách kết quả theo email của người dùng, theo thứ tự tăng dần. 4. Xuất mã sang CSV trong Lớp trình điều khiểnChúng tôi sẽ triển khai chức năng xuất CSV cho ứng dụng web Spring Boot hiện có, vì vậy chúng tôi viết mã cho phép người dùng tải xuống tệp CSV trong phương thức xử lý của lớp trình điều khiển, như minh họa bên dưới.package net.codejava; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.supercsv.io.CsvBeanWriter; import org.supercsv.io.ICsvBeanWriter; import org.supercsv.prefs.CsvPreference; @Controller public class UserController { @Autowired private UserServices service; @GetMapping("/users/export") public void exportToCSV(HttpServletResponse response) throws IOException { response.setContentType("text/csv"); DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); String currentDateTime = dateFormatter.format(new Date()); String headerKey = "Content-Disposition"; String headerValue = "attachment; filename=users_" + currentDateTime + ".csv"; response.setHeader(headerKey, headerValue); ListHãy để tôi giải thích mã này. Để gửi dữ liệu cho người dùng dưới dạng tệp tải xuống, chúng tôi cần đặt tiêu đề “Bố trí nội dung” cho phản hồi như bên dưới. String headerKey = "Content-Disposition"; String headerValue = "attachment; filename=users_" + currentDateTime + ".csv"; response.setContentType("text/csv"); response.setHeader(headerKey, headerValue);Loại nội dung được đặt thành văn bản/csv để trình duyệt sẽ biết và xử lý đúng cách. Và tên tệp CSV được tạo dựa trên ngày giờ hiện tại. DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); String currentDateTime = dateFormatter.format(new Date());Vì vậy, mỗi khi người dùng tải xuống một tệp CSV, tên của nó sẽ khác – với ngày giờ được thêm vào cuối tên tệp. Và phần còn lại của mã sử dụng thư viện SuperCSV để tạo tệp CSV dựa trên dữ liệu (liệt kê người dùng) được trả về từ lớp Dịch vụ người dùng . Lưu ý rằng để ghi dữ liệu CSV vào phản hồi, trình ghi phản hồi được chuyển đến CsvBeanWriter . ICsvBeanWriter csvWriter = new CsvBeanWriter(response.getWriter(), CsvPreference.STANDARD_PREFERENCE);Và để ánh xạ các cột trong tệp CSV với tên trường trong lớp thực thể, chúng tôi sử dụng một mảng Chuỗi như thế này. String[] nameMapping = {"id", "email", "fullName", "roles", "enabled"};Vì vậy, hãy đảm bảo sử dụng ánh xạ tên này để người viết CSV có thể đọc đúng tên trường từ lớp thực thể. 5. Thêm Liên kết CSV Xuất trong Trang XemChúng tôi sử dụng HTML và Thymeleaf để tạo siêu liên kết cho phép người dùng nhấp để xuất dữ liệu sang CSV như sau.package net.codejava; import javax.persistence.*; @Entity @Table(name = "roles") public class Role { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String description; // constructors, getter and setters are not shown for brevity }0 6. Kiểm tra xuất và tải xuống tệp CSVNhấp vào siêu liên kết Xuất sang CSV, ứng dụng Spring Boot sẽ tạo tệp CSV và trình duyệt sẽ tự động tải xuống tệp đó. Tên tập tin là một cái gì đó như thế này. users_2020-08-14_05-25-56. csv . Mở tệp này bằng trình soạn thảo văn bản như Notepad, bạn sẽ thấy nó thực sự là tệp CSV.Phần kết luậnĐến đây, bạn đã học cách viết mã chức năng xuất CSV cho ứng dụng web Spring Boot. Bạn thấy đấy, Spring Data JPA giúp dễ dàng lấy dữ liệu từ cơ sở dữ liệu và SuperCSV giúp dễ dàng tạo tệp CSV. Đối với phiên bản video của hướng dẫn này, xem video dưới đâyHướng dẫn liên quan
Hướng dẫn khởi động mùa xuân khác
Giới thiệu về tác giảNam Ha Minh is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.Thêm bình luận
Báo cho tôi biết khi có comment mới Gửi Bình luận12 jake2022-06-14 23. 19 Kiến thức bổ ích cho mọi người Taofeek Olajide Hamm2022-02-18 05. 56 Điều này rất hữu ích, cảm ơn bạn Josph13-12-2021 20. 30 xin chào, ông. Nam. Nam2021-10-28 17. 42 Chào Khánh, Nguyễn Đình Khánh2021-10-28 10. 04 Chào anh, 12 |