如何从csv文件读取数据并保存到数据库以及Spring Boot中的多对多关系

时间:2018-07-12 18:18:51

标签: csv spring-boot

我真的需要帮助。

我想从Spring Boot项目中的csv文件中读取数据,然后使用@Transactional保存到数据库中。

但是,我有2节课。

一个是角色:

import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

@Entity
@Table(name="roles")
public class Role {

    @Id
    @GeneratedValue
    private Long roleID;

    private String role;

    @ManyToMany( mappedBy = "roles")
    private Set<User> users = new HashSet<User>();

    private Role(){} //


    public Long getRoleID() {
        return roleID;
    }

    public void setRoleID(Long roleID) {
        this.roleID = roleID;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }

}

另一个是用户:

@Entity
@Table( name="users" )
public class User {


    public User(){

    }
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "userID")
    private Long userID;



    //  @NotNull(message = "Username text are must not be empty !")
    private String userUsername;


   // @NotNull(message = "Name text are must not be empty !")
    private String userName;
    //  @NotNull(message = "Surname text are must not be empty !")
    private String userSurname;

    //  @NotNull(message = "Please choose a password")
    private String password;

    //  @NotNull(message = "Please choose a password")
    @Transient
    private String passwordMatch;

    // @NotNull(message = "Give adress please")
    private String addres;
    // @Email(message = "Please enter valid e mail.")

    private String eMail;

    private boolean active = false;

    private String key;



    @ManyToMany( cascade = CascadeType.ALL, fetch = FetchType.EAGER )
    @JoinTable(
            name = "users_roles",
            joinColumns = {@JoinColumn(name="userID")},
            inverseJoinColumns = {@JoinColumn(name="roleID")}
    )

我想从csv文件中读取文件,然后将用户和角色实体都保存到数据库中。数据将如何?我无法弄清楚。

我又如何使用库或在自己的程序上读取数据?

还有一件事情,如果一个用户的数据损坏了,我不应该将数据同时保存到用户和角色数据库中。我认为可以使用@Transactional来实现吗?

有什么想法吗?我真的需要帮助谢谢你。

2 个答案:

答案 0 :(得分:0)

如果您只需要读写CSV文件,则可以使用Jackson-datafomrats

找到一个example

或者,如果您需要交易型,则可以使用spring batch

答案 1 :(得分:0)

使用FlatFileItemReader读取文件或将Apache POI与ItemReader一起使用。为给定实体编写JPAItemWriter或JDBCItemWriter的时间。