使用数据库创建新对象

时间:2019-03-21 12:20:56

标签: java mysql object

我想使用我的数据库来执行addmodule函数,但它必须处于循环中,而不仅仅是1个模块,我希望它从数据库中添加所有数据以创建addModule函数。我的数据库有相关信息,但是我不知道如何将其放入addmodule函数中以创建新的对象(模块)

  

timetable.addModule(1,“ cs1”,“计算机科学”,new int [] {1,2});

这是我的addModule:

  

public void addModule(int moduleId,String moduleCode,String module,int ProfessorIds []){           this.modules.put(moduleId,new Module(moduleId,moduleCode,module,ProfessorIDs));       }

准备使用数据库添加模块的语句是什么?但使用数组,因此将其全部添加

1 个答案:

答案 0 :(得分:0)

您可以创建一个模型类来存储数据库记录。

public class Course {

    int moduleId;
    String moduleCode;
    String module;
    List<Integer> professorIds;

    public Course() {

    }

    public Course(int moduleId, String moduleCode, String module, List<Integer> professorIds) {
        this.moduleId = moduleId;
        this.moduleCode = moduleCode;
        this.module = module;
        this.professorIds = professorIds;
    }

    public int getModuleId() {
        return moduleId;
    }

    public void setModuleId(int moduleId) {
        this.moduleId = moduleId;
    }

    public String getModuleCode() {
        return moduleCode;
    }

    public void setModuleCode(String moduleCode) {
        this.moduleCode = moduleCode;
    }

    public String getModule() {
        return module;
    }

    public void setModule(String module) {
        this.module = module;
    }

    public List<Integer> getProfessorIds() {
        return professorIds;
    }

    public void setProfessorIds(List<Integer> professorIds) {
        this.professorIds = professorIds;
    }

}

使用以下方式用数据库值实例化对象。我假设您的数据库表中有一个以逗号分隔的ProfessorIds值列表。另外,假设ProfessorIds列的数据类型为VARCHAR。

    String query = "SELECT moduleId, moduleCode, module, professorIds from Course";
    PreparedStatement ps = null;
    Connection conn = null;
    ResultSet rs = null;

    // initialize the conn variable before execute the query
    // use a try block to handle exceptions properly

    ps = conn.prepareStatement(query);

    rs = ps.executeQuery();

    List<Course> courseList = new ArrayList<Course>();

    while (rs.next()) {

        Course course = null;

        List<String> professorIdsStrList = Arrays.asList(rs.getString("professorIds").split("\\s*,\\s*"));
        List<Integer> professorIdsIntList = professorIdsStrList.stream()
                         .map(s -> Integer.parseInt(s))
                         .collect(Collectors.toList());

        course = new Course(rs.getInt("moduleId"), rs.getString("moduleCode"), rs.getString("module"), professorIdsIntList);

        courseList.add(course);

    }

您可以通过以下方式使用您的方法来添加模块。

// use this method call inside the database records reading method
addModule(rs.getInt("moduleId"), rs.getString("moduleCode"), rs.getString("module"), professorIdsIntList));

public void addModule(int moduleId, String moduleCode, String module, List<Integer> professorIds) { 
    this.modules.put(moduleId, new Module(moduleId, moduleCode, module, professorIds)); 
}

希望这对您有帮助!

使用以下内容更新时间表中的模块。

int index = 1;
while (rs.next()) {
    ...

    timetable.modules.put(index, module);
    index++;

    ...
}