实例讲解Java批量插入、更新数据
Java的批量添加数据,多个字段同时添加多条数据,我不知道你遇到过没有。今天我们就以一个具体的实例来说一下Java的批量添加数据,面向的是Oracle数据库。
前台页面:
<spanstyle="font-size:14px;"><bodyclass="main_body"scroll="no">
<divclass="employee_gun_dong">
<formname="webform"method="post">
<divclass="main_content_bg">
<divclass="main_content_title">
<divid="baseinfo"onclick="activeTabPanel(1)"style="margin-right:2px;"class="tab1">基本信息</div>
<divid="semsinfo"onclick="activeTabPanel(2)"style="margin-right:2px;"class="tab1">页签1</div>
<divid="changeinfo"onclick="activeTabPanel(3)"style="margin-right:2px;"class="tab1">页签2</div>
<divid="familyinfo"onclick="activeTabPanel(4)"style="margin-right:2px;"class="tab1">页签3</div>
<divid="changeinfo"onclick="activeTabPanel(5)"style="margin-right:2px;"class="tab1">页签4</div>
<divid="familyinfo"onclick="activeTabPanel(6)"style="margin-right:2px;"class="tab1">页签5</div>
<divid="familyinfo"onclick="activeTabPanel(7)"style="margin-right:2px;"class="tab2">页签6</div>
</div>
</div>
<divclass="main_content_bg"id="bankCardDiv">
<divclass="main_middle_bg">
<divclass="main_content_title">信息展示
<inputid="addBank"type="button"value="新增一行"class="modul_button_operate"onclick="addNewRow();"/>
</div>
<divclass="main_table_bg">
<tableid="parttable"width='100%'border='0'cellspacing='1'cellpadding='0'class='content_table_list'>
<tr>
<thclass='content_table_number'>序号</th>
<thclass='content_table_thnowarp'>属性1</th>
<thclass='content_table_thnowarp'>属性2</th>
<thclass='content_table_thnowarp'>属性3</th>
<thclass='content_table_thnowarp'>属性4</th>
<thclass='content_table_thnowarp'>属性5</th>
<thclass='content_table_thnowarp'>属性6</th>
<thclass='content_table_thnowarp'>属性7</th>
<thclass='content_table_thnowarp'>属性8</th>
<thclass='content_table_thnowarp'>属性9</th>
<thclass='content_table_thnowarp'>操作</th>
</tr>
<c:iftest="${fn:length(personFamilyInfoList)>0}">
<c:forEachitems="${personFamilyInfoList}"var="personFamilyInfoList"varStatus="st">
<tr>
<!--序号-->
<tdclass="content_table_number">${st.count}
<inputtype="hidden"name="personFamilyInfoList[${st.count-1}].SGuid"value="${personFamilyInfoList.SGuid}"/>
<inputtype="hidden"name="personFamilyInfoList[${st.count-1}].SPersonGuid"value="${personFamilyInfoList.SPersonGuid}"/>
<inputtype="hidden"name="personFamilyInfoList[${st.count-1}].SUnitGuid"value="${personFamilyInfoList.SUnitGuid}">
<inputtype="hidden"name="personFamilyInfoList[${st.count-1}].isEnable"value="${personFamilyInfoList.isEnable}">
</td>
<!--属性1-->
<tdclass="content_table_td_centernowrap">
<inputid="sFamilyName${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].SFamilyName"class="content_content_input"maxlength="20"value="${personFamilyInfoList.SFamilyName}">
</td>
<!--属性2-->
<tdclass="content_table_td_centernowrap">
<inputid="sFamilyIdcardNo${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].SFamilyIdcardNo"class="content_content_input"maxlength="20"value="${personFamilyInfoList.SFamilyIdcardNo}">
</td>
<!--属性3-->
<tdclass="content_table_td_centernowrap">
<selectid="iFamilySex${st.count-1}"name="personFamilyInfoList[${st.count-1}].IFamilySex">
<zw:basedictlistitemCode="<%=Constants.I_PERSON_SEX%>"selectValue="${personFamilyInfoList.IFamilySex}"></zw:basedictlist>
</select><fontcolor="red">*</font>
</td>
<!--属性4-->
<tdclass="content_table_td_centernowrap">
<selectid="sFamilyRelation${st.count-1}"name="personFamilyInfoList[${st.count-1}].SFamilyRelation">
<zw:basedictlistitemCode="<%=Constants.S_FAMILY_RELATION%>"selectValue="${personFamilyInfoList.SFamilyRelation}"></zw:basedictlist>
</select><fontcolor="red">*</font>
</td>
<!--属性5-->
<tdclass="content_table_td_centernowrap">
<inputid="sFamilyInsurancePlace${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].SFamilyInsurancePlace"class="content_content_input"maxlength="20"value="${personFamilyInfoList.SFamilyInsurancePlace}">
</td>
<!--属性6-->
<tdclass='content_table_td_centernowrap'>
<inputid="sFamilyResidencePalce${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].SFamilyResidencePalce"class="content_content_input"maxlength="20"value="${personFamilyInfoList.SFamilyResidencePalce}">
</td>
<!--属性7-->
<tdclass="content_table_td_centernowrap">
<inputid="sFamilyPhone${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].SFamilyPhone"class="content_content_input"maxlength="20"value="${personFamilyInfoList.SFamilyPhone}">
</td>
<!--属性8-->
<tdclass="content_table_td_centernowrap">
<inputid="dDentifySucessDate${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].DDentifySucessDate"value="${personFamilyInfoList.DDentifySucessDate}"onfocus="WdatePicker()"notnull="true"vdisp="首次参保时间"class="content_content_input"size="18"maxlength="18"style="width:70px;"/>
<fontcolor="red">*</font>
</td>
<!--属性9-->
<tdclass="content_table_td_centernowrap">
<inputid="dDentifyLostDate${st.count-1}"type="text"name="personFamilyInfoList[${st.count-1}].DDentifyLostDate"value="${personFamilyInfoList.DDentifyLostDate}"onfocus="WdatePicker()"notnull="true"vdisp="首次参保时间"class="content_content_input"size="18"maxlength="18"style="width:70px;"/>
</td>
<tdclass='content_table_td_centernowrap'>取消</td>
</tr>
</c:forEach>
</c:if>
</table>
</div>
</div>
</div>
<divclass="main_content_bg">
<divclass="main_content_title">
<tablestyle="width:100%">
<tr>
<tdwidth="100%"align="center">
<inputid="btnNextstep"type="button"value="上一步"class="modul_button_operate"onclick=""/>
<inputid="btnAdd"type="button"value="保存"class="modul_button_operate"onclick="saveOrUpdate()"/>
<inputid=""type="button"value="完成"class="modul_button_operate"onclick=""/>
<inputid="btnReturn"type="button"value="返回"class="modul_button_operate"onclick=""/>
</td>
</tr>
</table>
</div>
</div>
</form>
</div>
</body></span>
javascript函数:
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;"><scripttype="text/javascript">
$(function(){
loadCheck();
});
functionloadCheck(){
vartrs=$('#parttabletr').length;
if(trs==1){
addNewRow();
}
}
//初始变量
varnum=0;//页面计数变量
varrow=1;//行增加计数变量
varindex=2;//List列表计数变量
functionaddNewRow(){
vartrNum=$('#parttabletr').length;
if(trNum>1){
row=trNum;
num=trNum-1;
}
varhtmlText='<tr>'
+'<tdclass="content_table_number">'+row+'</td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="sFamilyName'+num+'"type="text"name="personFamilyInfoList['+num+'].SFamilyName"class="content_content_input"maxlength="20"></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="sFamilyIdcardNo'+num+'"type="text"name="personFamilyInfoList['+num+'].SFamilyIdcardNo"class="content_content_input"maxlength="20"></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<selectid="iFamilySex'+num+'"name="personFamilyInfoList['+num+'].IFamilySex">'
+'<zw:basedictlistitemCode="2000"selectValue="personFamilyInfoList['+num+'].IFamilySex"></zw:basedictlist>'
+'</select><fontcolor="red">*</font></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<selectid="sFamilyRelation'+num+'"name="personFamilyInfoList['+num+'].SFamilyRelation">'
+'<zw:basedictlistitemCode="135"selectValue="personFamilyInfoList['+num+'].SFamilyRelation"></zw:basedictlist>'
+'</select><fontcolor="red">*</font></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="sFamilyInsurancePlace'+num+'"type="text"name="personFamilyInfoList['+num+'].SFamilyInsurancePlace"class="content_content_input"maxlength="20"></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="sFamilyResidencePalce'+num+'"type="text"name="personFamilyInfoList['+num+'].SFamilyResidencePalce"class="content_content_input"maxlength="20"></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="sFamilyPhone'+num+'"type="text"name="personFamilyInfoList['+num+'].SFamilyPhone"class="content_content_input"maxlength="20"></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="dDentifySucessDate'+num+'"type="text"name="personFamilyInfoList['+num+'].DDentifySucessDate"onfocus="WdatePicker()"notnull="true"vdisp="首次参保时间"class="content_content_input"size="18"maxlength="18"style="width:70px;"/><fontcolor="red">*</font></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<inputid="dDentifyLostDate'+num+'"type="text"name="personFamilyInfoList['+num+'].DDentifyLostDate"onfocus="WdatePicker()"notnull="true"vdisp="首次参保时间"class="content_content_input"size="18"maxlength="18"style="width:70px;"/></td>'
+'<tdclass="content_table_td_centernowrap">'
+'<aonclick="delInsuranceInfo(this);">取消</a>'
+'</td>'
+'</tr>';
$("#parttable").append(htmlText);
num=num+1;
row+=1;
}
//删除动态列表
functiondelInsuranceInfo(t){
if(row>0){row=row-1}else{returnfalse;}
$(t).parent().parent().remove();
}
//保存或修改
functionsaveOrUpdate(){
$.ajax({
url:"personFamilyInfo_addOrUpdatePersonFamilyInfo_include_json.action",
type:"POST",
data:jQuery(document.forms[0]).serializeArray(),
success:function(resObj){
//判断返回值
if(resObj.trim()=='true'){
Ext.MessageBox.alert("提示","保存成功",function(){
});
}elseif(resObj.trim()=='update'){
Ext.MessageBox.alert("提示","更新成功",function(){
});
}else{
Ext.MessageBox.alert("提示","保存失败");
}
}
});
}</span>
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;"></script></span>
后台添加方法:
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;">/**
*<p>Description:批量添加多条信息</p>
*@parampersonFamilyInfoList实体列表
*@return布尔值,true为添加成功,否则为添加失败
*@throwsException
*@author:gaoying
*@update:
*@date:2015-7-20
*/
publicbooleanaddPersonFamilyInfo(List<PersonFamilyInfo>personFamilyInfoList)throwsException{
booleanbool=false;
if(personFamilyInfoList.size()>0&&personFamilyInfoList!=null){
for(inti=0;i<personFamilyInfoList.size();i++){
StringpersonFamilyID=UUIDHexGenerator.getUUID();
StringsunitGuid="11111111";
StringspersonGuid="0000000";
if(personFamilyInfoList.get(i)!=null){
personFamilyInfoList.get(i).setSGuid(personFamilyID);
personFamilyInfoList.get(i).setSUnitGuid(sunitGuid);
personFamilyInfoList.get(i).setSPersonGuid(spersonGuid);
personFamilyInfoList.get(i).setIsEnable(0);
personFamilyInfoList.get(i).setDOperateDate(newDate());
//设置系统的当前时间为生效时间,失效时间置为空
personFamilyInfoList.get(i).setDDentifySucessDate(newDate());
personFamilyInfoList.get(i).setDDentifyLostDate(null);
try{
StringsGuidString=personFamilyInfoService.saveNeedPk(personFamilyInfoList.get(i)).toString();
if(!"".equals(sGuidString)&&sGuidString.length()>0){
bool=true;
}else{
System.out.println("供养亲属信息表第"+i+"条信息存储失败!");
bool=false;
returnbool;
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
}
returnbool;
}</span>
后台更新方法:
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;">/**
*<p>Description:批量更新信息</p>
*@parampersonFamilyInfolist实体列表
*@parampersonId人员id
*@return布尔值,true代表更新成功,否则更新失败
*@throwsException
*@author:gaoying
*@update:
*@date:2015-7-20
*/
publicvoidupdatePersonFamilyInfo(List<PersonFamilyInfo>personFamilyInfolist,StringpersonId)throwsException{
//根据人员id查询页面有多少条数据
List<PersonFamilyInfo>oldPersonFamilyInfolist=personFamilyInfoService.getPersonFamilyInfoByPersonId(personId);
intnum=oldPersonFamilyInfolist.size();
if(personFamilyInfolist!=null&&personFamilyInfolist.size()>0){
//检查页面的信息是否有修改,然后更新到数据库
for(inti=0;i<num;i++){
try{
//设置一个布尔值,如果变动字段设置为false,如果不变动则设置为true
booleanbool=true;
//判断哪些字段更改过
if(!oldPersonFamilyInfolist.get(i).getSFamilyName().equals(personFamilyInfolist.get(i).getSFamilyName())){
bool=false;
}
if(!oldPersonFamilyInfolist.get(i).getSFamilyIdcardNo().equals(personFamilyInfolist.get(i).getSFamilyIdcardNo())){
bool=false;
}
if(!oldPersonFamilyInfolist.get(i).getIFamilySex().equals(personFamilyInfolist.get(i).getIFamilySex())){
bool=false;
}
if(!oldPersonFamilyInfolist.get(i).getSFamilyRelation().equals(personFamilyInfolist.get(i).getSFamilyRelation())){
bool=false;
}
if(!oldPersonFamilyInfolist.get(i).getSFamilyInsurancePlace().equals(personFamilyInfolist.get(i).getSFamilyInsurancePlace())){
bool=false;
}
if(!oldPersonFamilyInfolist.get(i).getSFamilyResidencePalce().equals(personFamilyInfolist.get(i).getSFamilyResidencePalce())){
bool=false;
}
if(!oldPersonFamilyInfolist.get(i).getSFamilyPhone().equals(personFamilyInfolist.get(i).getSFamilyPhone())){
bool=false;
}
System.out.println("未更改前时间:"+oldPersonFamilyInfolist.get(i).getDDentifySucessDate().getTime());
System.out.println("更改后的时间:"+personFamilyInfolist.get(i).getDDentifySucessDate().getTime());
if(oldPersonFamilyInfolist.get(i).getDDentifySucessDate().getTime()!=personFamilyInfolist.get(i).getDDentifySucessDate().getTime()){
bool=false;
}
if(bool==false){//证明字段更改过
//更新数据前,要把原来没改动的数据复制一条,添加进数据库,把系统的当前时间设为该条数据的失效时间
PersonFamilyInfopersonFamilyInfo=newPersonFamilyInfo();
BeanUtils.copyProperties(oldPersonFamilyInfolist.get(i),personFamilyInfo);
System.out.println("该条数据主键:"+personFamilyInfo.getSGuid());
personFamilyInfo.setSGuid(UUIDHexGenerator.getUUID());
System.out.println("设置主键:"+personFamilyInfo.getSGuid());
personFamilyInfo.setDOperateDate(newDate());
//将当前保存数据库的是否有效置为1:无效
personFamilyInfo.setIsEnable(1);
personFamilyInfo.setDDentifyLostDate(newDate());
personFamilyInfoService.save(personFamilyInfo);
//更新该条数据,把系统的当前时间设为系统的生效时间和操作时间,是否有效设为0:有效,失效时间为空
personFamilyInfolist.get(i).setIsEnable(0);
personFamilyInfolist.get(i).setDDentifySucessDate(newDate());
personFamilyInfolist.get(i).setDOperateDate(newDate());
personFamilyInfolist.get(i).setDDentifyLostDate(null);
personFamilyInfoService.merge(personFamilyInfolist.get(i));
}
}catch(Exceptione){
e.printStackTrace();
}
}
}</span>
这样,java多字段、多条数据批量添加的例子就完成了,主要要注意前台页面叠加出现多行的js函数和后台的添加和更新方法,用list接收,循环遍历进行添加。除此之外这里我想说一下下面这段代码:
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;">$(function(){
loadCheck();
});</span>
它就是如下代码的缩写:
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;">$(document).ready(function(){
loadCheck();
});</span> 其实这个代码和下面的代码是一个意思:
<spanstyle="font-family:KaiTi_GB2312;font-size:14px;">window.onload=function(){
loadCheck();
}</span>
这样就不用在body的onload事件里面调用,只需要在js程序段里面编写就可以了。虽然下面的代码可以和上面两个互换,但他们之间又有不同。首先是执行时间不同,$(document).ready在页面框架下载完毕后就执行,而window.onload必须在页面全部加载完毕(包含图片下载)后才能执行。很明显前者的执行效率高于后者。再就是执行数量的不同,$(document).ready可以重复写多个,而且每次执行结果不同;而window.onload尽管可以执行多个,但仅输出最后一个执行结果,无法完成多个结果的输出。
以上就是本文的全部内容,希望对大家的学习有所帮助。