读取csv类型的文件,进行去重。排序后在保存到数据库

AI解释的csv文件。

CSV是一种常见的文件格式,它代表逗号分隔值(Comma-Separated Values)。CSV文件是一种纯文本文件,其中包含由逗号分隔的数据行。每行数据表示一个记录,每个记录包含一个或多个字段。CSV文件通常用于在不同的应用程序之间共享数据,例如在电子表格程序和数据库之间传输数据。由于CSV文件是纯文本文件,因此可以使用任何文本编辑器打开和编辑。

首先引入依赖文件

pa包

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Spring boot WEB 依赖

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

数据库连接依赖

        <dependency>

            <groupId>com.mysql</groupId>

            <artifactId>mysql-connector-j</artifactId>

            <scope>runtime</scope>

        </dependency>

配置数据库连接三要素!

进行实体类的创建

实体类一定要加上@Entity注解

表中要有主键,需要添加上@ID的注解。

还需要定义主键生成策略。

// 标注主键

@Id

// 指定主键生成策略  自动递增

@GeneratedValue(strategy = GenerationType.IDENTITY)

实体类里的属性名要和数据库的字段名相对应。

创建接口,继承JPA类。并添加泛型

建controller层 

@Autowired
private Student_2Respository student_2Respository;
String path="D:\\files/测试CSV.txt";

    @PostMapping("upToDb")
    public String upToDb(@RequestParam("file")MultipartFile file) throws IOException {
        //先读取文件
        BufferedReader bufferedReader = new BufferedReader(new FileReader(path));
        //使用空数组接收文件
        List<Student_2> student2s = new ArrayList<>();
        //遍历每一行数据,存进数组
        String line;
        //判断文档第一行是否是标题
//        boolean isTitle = true;
        while ((line=bufferedReader.readLine()) != null){
//            if (isTitle) {
//                isTitle = false;
//                continue; // 跳过标题行
//            }
            String[] split = line.split(",");
            //new 出实体类对象
            Student_2 student_2 = new Student_2();
            student_2.setName(split[0]);
            student_2.setDenger(split[1]);
            student_2.setBirthday(split[2]);
            student_2.setAddress(split[3]);
            student2s.add(student_2);
        }
        //对数组进行排序  根据年龄排序
        Collections.sort(student2s, new Comparator<Student_2>() {
            @Override
            public int compare(Student_2 o1, Student_2 o2) {
                return o1.getBirthday().compareTo(o2.getBirthday());
            }
        });
        for (Student_2 student2 : student2s) {
            System.out.println("按照年龄排序"+student2);
        }

        //对数据进行去重  返回的就是Student_2的实体类.
        LinkedHashSet<Student_2> students = new LinkedHashSet<>();
        for (int i = 0; i < student2s.size(); i++) {
            Student_2 student_2 = student2s.get(i);
            students.add(student_2);
        }
        for (Object student : students) {
            System.out.println("去重后的数组"+student);
        }

        //保存到数据库
        student_2Respository.saveAll(students);
        return "保存成功";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值