Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 将XML中的不同值插入数据库表_Java_Xml_Oracle_Xsd - Fatal编程技术网

Java 将XML中的不同值插入数据库表

Java 将XML中的不同值插入数据库表,java,xml,oracle,xsd,Java,Xml,Oracle,Xsd,我有如下XML: <employee> <code>13</code> <label>Admin</label> </employee> <employee> <code>13</code> <label>Admin</label> </employee>

我有如下XML:

    <employee>
        <code>13</code>
        <label>Admin</label>
    </employee>
    <employee>
        <code>13</code>
        <label>Admin</label>
    </employee>
    <employee>
        <code>09</code>
        <label>Logistics</label>
    </employee>
在我的Oracle数据库中,我有两列,即CODE1、CODE2。 数据应该像CODE1=13和CODE2=09那样插入

但是,目前的情况是,代码1=13和代码2=13。和09未插入到数据库中

它只存储前2个值,忽略其余值。 我的要求是,重复值只能在DB中插入一次

预期结果: 代码1=13,代码2=09

以下是我的java代码:

    for (int i = 0; i < 2; i++) {
            final int count = i + 1;
            String code = null;
            final Emploi[] employee = tabLieuTrav.getEmployee();
                code = employee[i].getCode();
                if (code != null) {
                mapParam.addParamValue(CODE + count,
                        code);
            } else {
                mapParam.addParamValue(CODE + count, null,
                        Types.VARCHAR);
            }
for(int i=0;i<2;i++){
最终整数计数=i+1;
字符串代码=null;
最终雇员[]雇员=tabLieuTrav.getEmployee();
code=employee[i].getCode();
如果(代码!=null){
mapParam.addParamValue(代码+计数,
代码);
}否则{
mapParam.addParamValue(代码+计数,空,
类型(VARCHAR);
}
getCode()从标记
返回值(例如13)


提前感谢。

尝试以下解决方案

首先,您应该创建一个Employee类,包括
hasCode()
equals()
方法,如下所示

public class Employee {

    private int code; 
    private String lable;

    public Employee(int code, String lable) {
        super();
        this.code = code;
        this.lable = lable;
    }
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getLable() {
        return lable;
    }
    public void setLable(String lable) {
        this.lable = lable;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + code;
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Employee other = (Employee) obj;
        if (code != other.code)
            return false;
        return true;
    }
}
for (Employee employee : uniqueEmployee) {
    code = employee.getCode();
    if (code != null) {
        mapParam.addParamValue(CODE + count, code);
    } else {
        mapParam.addParamValue(CODE + count, null, Types.VARCHAR);
    }
}
上面的
hasCode()
equals()
方法是由eclipse ide生成的。您可以像这样手动创建这些方法

@Override
public boolean equals(Object obj) {
    if (obj instanceof Employee) {
        return Objects.equals(code, ((Employee) obj).code);
    }
    return false;
}

@Override
public int hashCode() {
    return this.code;
}
等于方法:指示其他对象是否“等于”此对象

哈希代码方法:返回对象的哈希代码值。哈希表(如HashMap提供的哈希表)支持此方法

然后,将
employee
数组添加到ArrayList。因为下面提到的方法描述了如何从ArrayList中获取不同的值

Emploi[] employee = tabLieuTrav.getEmployee();
List<Employee> empList = new ArrayList(Arrays.asList(employee));
方法二,使用Java8流不同方法从ArrayList中删除重复项(从集合中返回不同的元素)


如何在您的程序中读取xml数据,请共享相关的源代码这与读取xml数据无关。如何将上述xml文件传递到您的程序中,源代码?
元素的值保存在
ecode
变量中或相关变量是什么?希望现在更清楚。需要在ore出于安全原因发布原始代码…如果您理解:)将让您知道结果
List<Employee> uniqueEmployee = empList..stream().distinct().collect(Collectors.toList();
for (Employee employee : uniqueEmployee) {
    code = employee.getCode();
    if (code != null) {
        mapParam.addParamValue(CODE + count, code);
    } else {
        mapParam.addParamValue(CODE + count, null, Types.VARCHAR);
    }
}