实例讲解Java批量插入、更新数据

时间:2022-08-30 18:51:03

Java的批量添加数据,多个字段同时添加多条数据,我不知道你遇到过没有。今天我们就以一个具体的实例来说一下Java的批量添加数据,面向的是Oracle数据库。

前台页面:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<span style="font-size:14px;"><body class="main_body" scroll="no">
<div class="employee_gun_dong">
  <form name="webform" method="post">  
      <div class="main_content_bg">
        <div class="main_content_title">
            <div id="baseinfo" onclick="activeTabPanel(1)" style="margin-right:2px;" class="tab1">基本信息</div>
            <div id="semsinfo" onclick="activeTabPanel(2)" style="margin-right:2px;" class="tab1" >页签1</div>
            <div id="changeinfo" onclick="activeTabPanel(3)"style="margin-right:2px;" class="tab1" >页签2</div>
            <div id="familyinfo" onclick="activeTabPanel(4)" style="margin-right:2px;" class="tab1" >页签3</div>
            <div id="changeinfo" onclick="activeTabPanel(5)"style="margin-right:2px;" class="tab1" >页签4</div>
            <div id="familyinfo" onclick="activeTabPanel(6)" style="margin-right:2px;" class="tab1" >页签5</div>
            <div id="familyinfo" onclick="activeTabPanel(7)" style="margin-right:2px;" class="tab2" >页签6</div>
        </div>
      </div>
       
      <div class="main_content_bg" id="bankCardDiv">
        <div class="main_middle_bg">
        <div class="main_content_title">信息展示 
          <input id="addBank" type="button" value="新增一行" class="modul_button_operate" onclick="addNewRow();" />
        </div>                    
            <div class="main_table_bg">
            <table id="parttable" width='100%' border='0' cellspacing='1' cellpadding='0' class='content_table_list'
                <tr>
                  <th class='content_table_number'>序号</th>
                  <th class='content_table_thnowarp'>属性1</th>
                  <th class='content_table_thnowarp'>属性2</th>
                  <th class='content_table_thnowarp'>属性3</th>
                  <th class='content_table_thnowarp'>属性4</th>
                  <th class='content_table_thnowarp'>属性5</th>
                  <th class='content_table_thnowarp'>属性6</th>
                  <th class='content_table_thnowarp'>属性7</th>
                  <th class='content_table_thnowarp'>属性8</th>
                  <th class='content_table_thnowarp'>属性9</th>
                  <th class='content_table_thnowarp'>操作</th>
                </tr>
                <c:if test="${fn:length(personFamilyInfoList) > 0}">
                <c:forEach items="${personFamilyInfoList}" var="personFamilyInfoList" varStatus="st"
                               
                <tr>
                  <!-- 序号 -->
                  <td class="content_table_number">${st.count}
                    <input type="hidden" name="personFamilyInfoList[${st.count-1}].SGuid" value="${personFamilyInfoList.SGuid}"/>
                    <input type="hidden" name="personFamilyInfoList[${st.count-1}].SPersonGuid" value="${personFamilyInfoList.SPersonGuid}"/>                   
                    <input type="hidden" name="personFamilyInfoList[${st.count-1}].SUnitGuid" value="${personFamilyInfoList.SUnitGuid }">
                    <input type="hidden" name="personFamilyInfoList[${st.count-1}].isEnable" value="${personFamilyInfoList.isEnable }">
                  </td
                  <!-- 属性1-->
                  <td class="content_table_td_centernowrap">
                    <input id="sFamilyName${st.count-1}" type="text" name="personFamilyInfoList[${st.count-1}].SFamilyName" class="content_content_input" maxlength="20" value="${personFamilyInfoList.SFamilyName}">
                  </td>
                  <!-- 属性2-->
                  <td class="content_table_td_centernowrap">
                    <input id="sFamilyIdcardNo${st.count-1}" type="text" name="personFamilyInfoList[${st.count-1}].SFamilyIdcardNo" class="content_content_input" maxlength="20" value="${personFamilyInfoList.SFamilyIdcardNo}">
                  </td>
                  <!-- 属性3-->                  
                  <td class="content_table_td_centernowrap">
                    <select id="iFamilySex${st.count-1}" name="personFamilyInfoList[${st.count-1}].IFamilySex">
                      <zw:basedictlist itemCode="<%=Constants.I_PERSON_SEX %>" selectValue="${personFamilyInfoList.IFamilySex}"></zw:basedictlist>
                    </select><font color="red">*</font>
                  </td>
                  <!-- 属性4-->
                  <td class="content_table_td_centernowrap">
                    <select id="sFamilyRelation${st.count-1}" name="personFamilyInfoList[${st.count-1}].SFamilyRelation">
                      <zw:basedictlist itemCode="<%=Constants.S_FAMILY_RELATION %>" selectValue="${personFamilyInfoList.SFamilyRelation}"></zw:basedictlist>
                    </select><font color="red">*</font>
                  </td>
                  <!-- 属性5-->    
                  <td class="content_table_td_centernowrap">
                    <input id="sFamilyInsurancePlace${st.count-1}" type="text" name="personFamilyInfoList[${st.count-1}].SFamilyInsurancePlace" class="content_content_input" maxlength="20" value="${personFamilyInfoList.SFamilyInsurancePlace}">  
                  </td>
                  <!-- 属性6-->
                  <td class='content_table_td_centernowrap'>
                    <input id="sFamilyResidencePalce${st.count-1}" type="text" name="personFamilyInfoList[${st.count-1}].SFamilyResidencePalce" class="content_content_input" maxlength="20" value="${personFamilyInfoList.SFamilyResidencePalce}">
                  </td>
                  <!-- 属性7-->
                  <td class="content_table_td_centernowrap">
                    <input id="sFamilyPhone${st.count-1}" type="text" name="personFamilyInfoList[${st.count-1}].SFamilyPhone" class="content_content_input" maxlength="20" value="${personFamilyInfoList.SFamilyPhone}">
                  </td>
                  <!-- 属性8-->
                  <td class="content_table_td_centernowrap">
                    <input id="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;"/>
                    <font color="red">*</font>
                  </td>
                  <!-- 属性9-->
                  <td class="content_table_td_centernowrap">
                    <input id="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>
                  <td class='content_table_td_centernowrap'>取消</td>  
                </tr>
                 
                </c:forEach>
                </c:if>                                      
              </table>
          </div>          
        </div>
      </div>
      <div class="main_content_bg">
      <div class="main_content_title">
        <table style="width:100%">
          <tr>
            <td width="100%" align="center">
              <input id="btnNextstep" type="button" value="上一步" class="modul_button_operate" onclick="" />
              <input id="btnAdd" type="button" value="保存" class="modul_button_operate" onclick="saveOrUpdate()" />
              <input id="" type="button" value="完成" class="modul_button_operate" onclick="" />
              <input id="btnReturn" type="button" value="返回" class="modul_button_operate" onclick="" />
            </td>           
          </tr>
        </table>
      </div>
     </div>
  </form>  
</div>
</body></span>

javascript函数:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<span style="font-family:KaiTi_GB2312;font-size:14px;"><script type="text/javascript">
  $(function(){
    loadCheck();
  });
 
  function loadCheck(){
    var trs = $('#parttable tr').length;
    if(trs == 1){
    addNewRow();
    }
  }
 
  //初始变量
  var num = 0;//页面计数变量
  var row = 1;//行增加计数变量
  var index = 2;//List列表计数变量
  function addNewRow(){
    var trNum = $('#parttable tr').length;
    if(trNum>1){
      row = trNum;
      num = trNum - 1;
    }
    var htmlText ='<tr>'
      +'<td class="content_table_number">'+row+'</td>'
 
      +'<td class="content_table_td_centernowrap">'
      +'<input id="sFamilyName'+num+'" type="text" name="personFamilyInfoList['+num+'].SFamilyName" class="content_content_input" maxlength="20"></td>'
 
      +'<td class="content_table_td_centernowrap">'
      +'<input id="sFamilyIdcardNo'+num+'" type="text" name="personFamilyInfoList['+num+'].SFamilyIdcardNo" class="content_content_input" maxlength="20"></td>'
               
      +'<td class="content_table_td_centernowrap">'
      +'<select id="iFamilySex'+num+'" name="personFamilyInfoList['+num+'].IFamilySex">'
      +'<zw:basedictlist itemCode="2000" selectValue="personFamilyInfoList['+num+'].IFamilySex"></zw:basedictlist>'
      +'</select><font color="red">*</font></td>'
 
      +'<td class="content_table_td_centernowrap">'
      +'<select id="sFamilyRelation'+num+'" name="personFamilyInfoList['+num+'].SFamilyRelation">'
      +'<zw:basedictlist itemCode="135" selectValue="personFamilyInfoList['+num+'].SFamilyRelation"></zw:basedictlist>'
      +'</select><font color="red">*</font></td>'
   
      +'<td class="content_table_td_centernowrap">'
      +'<input id="sFamilyInsurancePlace'+num+'" type="text" name="personFamilyInfoList['+num+'].SFamilyInsurancePlace" class="content_content_input" maxlength="20"></td>'
       
      +'<td class="content_table_td_centernowrap">'
      +'<input id="sFamilyResidencePalce'+num+'" type="text" name="personFamilyInfoList['+num+'].SFamilyResidencePalce" class="content_content_input" maxlength="20"></td>'
 
      +'<td class="content_table_td_centernowrap">'
      +'<input id="sFamilyPhone'+num+'" type="text" name="personFamilyInfoList['+num+'].SFamilyPhone" class="content_content_input" maxlength="20"></td>'
       
      +'<td class="content_table_td_centernowrap">'
      +'<input id="dDentifySucessDate'+num+'" type="text" name="personFamilyInfoList['+num+'].DDentifySucessDate" onfocus="WdatePicker()" notnull="true" vdisp="首次参保时间" class="content_content_input" size="18" maxlength="18" style="width:70px;"/><font color="red">*</font></td>'
 
      +'<td class="content_table_td_centernowrap">'
      +'<input id="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>'    
       
      +'<td class="content_table_td_centernowrap">'     
      +'<a onclick="delInsuranceInfo(this);">取消</a>'
      +'</td>'
      +'</tr>';
    $("#parttable").append(htmlText);
    num = num + 1;
    row += 1;
  }
 
  //删除动态列表
  function delInsuranceInfo(t){
    if(row>0){row=row-1} else{return false;}
    $(t).parent().parent().remove();
  }
 
  //保存或修改
  function saveOrUpdate(){
    $.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(){
             
          });                               
        }else if(resObj.trim() == 'update'){
          Ext.MessageBox.alert("提示","更新成功",function(){
 
          });
        } else {
          Ext.MessageBox.alert("提示","保存失败");
        }
      }
    });
  }      </span>
<span style="font-family:KaiTi_GB2312;font-size:14px;"></script></span>

后台添加方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<span style="font-family:KaiTi_GB2312;font-size:14px;">/**
   * <p>Description: 批量添加多条信息</p>
   * @param personFamilyInfoList 实体列表
   * @return 布尔值,true为添加成功,否则为添加失败
   * @throws Exception
   * @author    : gaoying
   * @update    :
   * @date     : 2015-7-20
   */
  public boolean addPersonFamilyInfo(List<PersonFamilyInfo> personFamilyInfoList) throws Exception{
    boolean bool = false;
    if(personFamilyInfoList.size()>0 && personFamilyInfoList != null){
      for(int i=0; i<personFamilyInfoList.size(); i++){
        String personFamilyID = UUIDHexGenerator.getUUID();
        String sunitGuid = "11111111";
        String spersonGuid = "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(new Date());
          //设置系统的当前时间为生效时间,失效时间置为空
          personFamilyInfoList.get(i).setDDentifySucessDate(new Date());
          personFamilyInfoList.get(i).setDDentifyLostDate(null);     
          try {
            String sGuidString = personFamilyInfoService.saveNeedPk(personFamilyInfoList.get(i)).toString();
            if(!"".equals(sGuidString)&&sGuidString.length()>0){
              bool = true;
            }else{
              System.out.println("供养亲属信息表 第"+i+"条信息存储失败!");
              bool = false;
              return bool;
            }
 
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
       
    }
    return bool;    
  }</span>

后台更新方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<span style="font-family:KaiTi_GB2312;font-size:14px;">/**
   * <p>Description: 批量更新信息</p>
   * @param personFamilyInfolist 实体列表
   * @param personId 人员id
   * @return 布尔值,true代表更新成功,否则更新失败
   * @throws Exception
   * @author    : gaoying
   * @update    :
   * @date     : 2015-7-20
   */
  public void updatePersonFamilyInfo(List<PersonFamilyInfo> personFamilyInfolist, String personId) throws Exception{
    //根据人员id查询页面有多少条数据
    List<PersonFamilyInfo> oldPersonFamilyInfolist = personFamilyInfoService.getPersonFamilyInfoByPersonId(personId);
    int num = oldPersonFamilyInfolist.size();
    if(personFamilyInfolist != null&&personFamilyInfolist.size() > 0){
      //检查页面的信息是否有修改,然后更新到数据库
      for(int i = 0; i<num; i++){
        try{
          //设置一个布尔值,如果变动字段设置为false,如果不变动则设置为true
          boolean bool = 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){//证明字段更改过
            //更新数据前,要把原来没改动的数据复制一条,添加进数据库,把系统的当前时间设为该条数据的失效时间        
            PersonFamilyInfo personFamilyInfo = new PersonFamilyInfo();
             
            BeanUtils.copyProperties(oldPersonFamilyInfolist.get(i), personFamilyInfo);
            System.out.println("该条数据主键:" + personFamilyInfo.getSGuid());
            personFamilyInfo.setSGuid(UUIDHexGenerator.getUUID());
            System.out.println("设置主键:" + personFamilyInfo.getSGuid());
            personFamilyInfo.setDOperateDate(new Date());
            //将当前保存数据库的是否有效置为1:无效
            personFamilyInfo.setIsEnable(1);
            personFamilyInfo.setDDentifyLostDate(new Date());            
             
            personFamilyInfoService.save(personFamilyInfo);
             
            //更新该条数据,把系统的当前时间设为系统的生效时间和操作时间,是否有效设为0:有效,失效时间为空
            personFamilyInfolist.get(i).setIsEnable(0);  
            personFamilyInfolist.get(i).setDDentifySucessDate(new Date());
            personFamilyInfolist.get(i).setDOperateDate(new Date());
            personFamilyInfolist.get(i).setDDentifyLostDate(null);
            personFamilyInfoService.merge(personFamilyInfolist.get(i));
          }                            
        }catch (Exception e) {
          e.printStackTrace();
        
               
      }
    }</span>

这样,java多字段、多条数据批量添加的例子就完成了,主要要注意前台页面叠加出现多行的js函数和后台的添加和更新方法,用list接收,循环遍历进行添加。除此之外这里我想说一下下面这段代码:

 

复制代码 代码如下:
<span style="font-family:KaiTi_GB2312;font-size:14px;">$(function(){ 
    loadCheck(); 
});</span>  
  

 

它就是如下代码的缩写:

 

复制代码 代码如下:
<span style="font-family:KaiTi_GB2312;font-size:14px;"> $(document).ready(function(){ 
        loadCheck(); 
});</span> 

 

其实这个代码和下面的代码是一个意思:

 

复制代码 代码如下:
<span style="font-family:KaiTi_GB2312;font-size:14px;">window.onload=function(){ 
       loadCheck(); 
}</span>
   

 

这样就不用在body的onload事件里面调用,只需要在js程序段里面编写就可以了。虽然下面的代码可以和上面两个互换,但他们之间又有不同。首先是执行时间不同,$(document).ready在页面框架下载完毕后就执行,而window.onload必须在页面全部加载完毕(包含图片下载)后才能执行。很明显前者的执行效率高于后者。再就是执行数量的不同,$(document).ready可以重复写多个,而且每次执行结果不同;而window.onload尽管可以执行多个,但仅输出最后一个执行结果,无法完成多个结果的输出。

以上就是本文的全部内容,希望对大家的学习有所帮助。