Java 将XML中的不同值插入数据库表
我有如下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>
<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);
}
}