Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该如何存储地图<;字符串,链接列表<;对象>&燃气轮机;将数据导入数据库表?_Java_Mysql_Linked List_Hashmap - Fatal编程技术网

Java 我应该如何存储地图<;字符串,链接列表<;对象>&燃气轮机;将数据导入数据库表?

Java 我应该如何存储地图<;字符串,链接列表<;对象>&燃气轮机;将数据导入数据库表?,java,mysql,linked-list,hashmap,Java,Mysql,Linked List,Hashmap,“我的地图”将字符串存储为键,将对象的LinkedList存储为值。现在,我需要将这些数据存储在数据库表中。 我的地图数据类似于- 关键词:价值 id : [2, 3, 4, 5] name : [Rohit, Iravati, Uttam, Sushil] jobrole : [Software Engineer, Software Engineer, Manager, Director] salary : [100, 100, 100, 100] 我的桌子结构是- [身份证、姓名、工

“我的地图”将字符串存储为键,将对象的LinkedList存储为值。现在,我需要将这些数据存储在数据库表中。 我的地图数据类似于-

关键词:价值

id : [2, 3, 4, 5]

name : [Rohit, Iravati, Uttam, Sushil]

jobrole : [Software Engineer, Software Engineer, Manager, Director]

salary : [100, 100, 100, 100]
我的桌子结构是-

[身份证、姓名、工作角色、工资]

我不知道我应该如何从地图中读取数据以创建以下给定查询,以将此地图数据存储在表中-

  • 插入DBROLTA.Employee(id、姓名、职务、薪水)值(2、'Rohit'、'Software Engineer'、'100')

  • 在DBROLTA.Employee(id、姓名、职务、薪水)中插入值(3,'Iravati','Software Engineer','100')

  • 在DBROLTA.Employee(id、姓名、职务角色、薪水)中插入值(4,‘Uttam’、‘经理’、‘100’)


任何人都可以帮助我。

您可以使用for循环迭代所有数据,并一次生成一个查询字符串

也许是这样的

for(int j = 0; j < mapOfData.get("ID").length(); j++){
     strID = mapOfData.get("ID").get(j);
     strName = mapOfData.get("Name").get(j);

     query = "INSERT INTO TABLE VALUES (" + strID + ", " + strName + ")";
}
for(int j=0;j

您可以遍历地图的整个长度(假设地图中没有丢失的数据),访问每个LinkedList并从中获取值。

在地图中存储键和相应的值数组后,将键存储为id,将自定义对象存储为值

其中,自定义对象是具有属性id、名称、jobrole和Salary的对象

创建映射并根据ID存储自定义对象。因此,您可以轻松检索对象、创建sql语句并执行它们

 Map<Interger, CustomObject> = new HashMap<Integer, CustomObject>
Map=newhashmap
对于多插入查询执行,请使用批插入和批执行方法,这是为了避免多个数据库命中

有关批更新操作,请参阅。

publicstaticvoidmain(字符串[]args){
public static void main(String[] args) {
    Map<String, LinkedList<Object>> map = new HashMap<>();
    LinkedList<Object> data = new LinkedList<>();
    data.add(2);
    data.add(3);
    map.put("id", data);

    data = new LinkedList<>();
    data.add("Rohit");
    data.add("Iravati");
    map.put("name", data);

    data = new LinkedList<>();
    data.add("SE");
    data.add("SSE");
    map.put("jobrole", data);

    data = new LinkedList<>();
    data.add(100);
    data.add(200);
    map.put("salary", data);

    for (int i = 0; i < map.get("id").size(); i++) {
        Object id = map.get("id").get(i);
        Object name = map.get("name").get(i);
        Object jobrole = map.get("jobrole").get(i);
        Object salary = map.get("salary").get(i);
        // TODO Use above values to create your query.
        System.out.println(id + "-" + name + "-" + jobrole + "-" + salary);
    }

}
Map Map=newhashmap(); LinkedList数据=新建LinkedList(); 数据。添加(2); 数据。添加(3); 地图放置(“id”,数据); 数据=新的LinkedList(); 数据。添加(“Rohit”); 数据。添加(“Iravati”); 地图。放置(“名称”,数据); 数据=新的LinkedList(); 数据。添加(“SE”); 数据。添加(“SSE”); map.put(“作业角色”,数据); 数据=新的LinkedList(); 数据。添加(100); 数据.增加(200); map.put(“工资”,数据); 对于(int i=0;i
这是一种不好的方法,但您当前的数据结构并没有给我留下太多选择

public static void main(String[] args) {

    //GIVEN
    Map<String, LinkedList<Object>> data = new HashMap<>();
    data.put("id", Stream.of(1, 2, 3)
            .collect(Collectors.toCollection(LinkedList::new)));
    data.put("name", Stream.of("a", "b", "c")
            .collect(Collectors.toCollection(LinkedList::new)));
    data.put("jobrole", Stream.of("x", "y", "z")
            .collect(Collectors.toCollection(LinkedList::new)));
    data.put("salary", Stream.of(10.0, 20.0, 30.0)
            .collect(Collectors.toCollection(LinkedList::new)));

    //Let's fix your data structure first
    Employee[] employeesArr = null;
    for (Map.Entry<String, LinkedList<Object>> entry : data.entrySet()) {
        int count = 0;
        if (employeesArr == null) {
            employeesArr = new Employee[entry.getValue().size()];
            for (int i = 0; i < employeesArr.length; i++) {
                employeesArr[i] = new Employee();
            }
        }
        switch (entry.getKey()) {
            case "id":
                for (Object o : entry.getValue()) {
                    employeesArr[count++].setId((Integer) o);
                }
                break;
            case "name":
                for (Object o : entry.getValue()) {
                    employeesArr[count++].setName((String) o);
                }
                break;
            case "jobrole":
                for (Object o : entry.getValue()) {
                    employeesArr[count++].setRole((String) o);
                }
                break;
            case "salary":
                for (Object o : entry.getValue()) {
                    employeesArr[count++].setSalary((Double) o);
                }
                break;
        }
    }

    //employeesArr is a much better data structure
    for (int i = 0; i < employeesArr.length; i++) {
        //use PreparedStatement or an ORM
        System.out.println("insert into DBROLTA.Employee(id, name, jobrole, salary) values ("
                + employeesArr[i].getId() + ", '"
                + employeesArr[i].getName() + "', '"
                + employeesArr[i].getRole() + "', "
                + employeesArr[i].getSalary()
                + ");");
    }

}

通常使用数据结构
列表
,而不是您的方法。这样,我们可以使用映射为列表中的每个元素轻松创建insert语句。我的建议不是试图回答这个问题,而是修复您的数据结构。@TimBiegeleisen理想情况下应该是
List
:)
public class Employee {
    private int id;
    private String name;
    private String role;
    private double salary;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    //other getters/setters
}