亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java的Hibernate框架中的基本映射用法講解

 更新時(shí)間:2016年07月05日 08:58:27   作者:zhang_xinxiu  
映射是Hibernate框架操作數(shù)據(jù)庫(kù)數(shù)據(jù)的重要特性之一,這里我們來(lái)看一下Java的Hibernate框架中的基本映射用法講解,包括最基本的單向一對(duì)一與多對(duì)一映射關(guān)系等:

Hibernate進(jìn)行了分類(lèi)整合發(fā)現(xiàn)其實(shí)Hibernate分為三大部分:核心對(duì)象、映射、HQL,這三大部分開(kāi)發(fā)過(guò)程中最常使用,前幾篇討論了核心對(duì)象及對(duì)象之間的轉(zhuǎn)換方法,接下來(lái)討論Hibernate的映射使用方法。
 
Hibernate一個(gè)重要的功能就是映射,它能夠在對(duì)象模型和關(guān)系模型之間轉(zhuǎn)換,是面向?qū)ο缶幊趟枷胩岢褂玫?,使用映射程序開(kāi)發(fā)人員只需要關(guān)心對(duì)象模型中代碼的編寫(xiě)。對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間的映射通常是由XML文檔來(lái)定義的。這個(gè)映射文檔被設(shè)計(jì)為易讀的,并且可以手動(dòng)修改。這種映射關(guān)系我總結(jié)為下圖:

20167590517885.png (442×305)

映射是通過(guò)XML來(lái)定義的,使用Hibernate創(chuàng)建的session來(lái)管理,最后由session使用JTA把更改提交到數(shù)據(jù)庫(kù)中。session可以理解為持久化管理器,管理持久層中的對(duì)象,它是由sessionFactory創(chuàng)建的。使用Hibernate編程時(shí)首先要連接數(shù)據(jù)庫(kù),所以首先要去查看xml中有關(guān)數(shù)據(jù)庫(kù)連接的配置,根據(jù)文檔的配置創(chuàng)建sessionFactory(可以理解為數(shù)據(jù)庫(kù)鏡像),再由sessionFactory創(chuàng)建一個(gè)session,最后由session統(tǒng)一將更改提交到數(shù)據(jù)庫(kù),這才完成了一部所有的操作。


使用過(guò)程
1.創(chuàng)建映射文件,映射文件以.hbm.xml為后綴名,標(biāo)明它是Hibernate的映射文件;
2.在映射文件中注冊(cè)實(shí)體類(lèi),并將實(shí)體類(lèi)的屬性添加到映射類(lèi)中,在添加屬性時(shí)要指定兩種值分別是id和property,id指明它是一個(gè)實(shí)體的唯一標(biāo)示,property指明它是表的字段列;
3.提交修改,同步數(shù)據(jù)。
Note:開(kāi)發(fā)過(guò)xml數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫(kù)的開(kāi)發(fā)人員很快就能理解這種映射其實(shí)是一種批量更新、批量創(chuàng)建的過(guò)程,映射也不例外,Hibernate規(guī)定了一套映射標(biāo)準(zhǔn),按照標(biāo)準(zhǔn)就能夠?qū)崿F(xiàn)轉(zhuǎn)換,它的內(nèi)部實(shí)現(xiàn)還是死的,所以它只是相對(duì)的靈活易用。

一個(gè)簡(jiǎn)單的實(shí)體類(lèi)映射過(guò)程:
1. 實(shí)體類(lèi)User1的屬性代碼:

package com.hibernate; 
 
import java.util.Date; 
 
public class User1 { 
 private String id; 
 private String name; 
 private String password; 
 private Date createTime; 
 private Date expireTime; 
 public String getId() { 
  return id; 
 } 
 public String getName() { 
  return name; 
 } 
 public void setName(String name) { 
  this.name = name; 
 } 
 public String getPassword() { 
  return password; 
 } 
 public void setPassword(String password) { 
  this.password = password; 
 } 
 public Date getCreateTime() { 
  return createTime; 
 } 
 public void setCreateTime(Date createTime) { 
  this.createTime = createTime; 
 } 
 public Date getExpireTime() { 
  return expireTime; 
 } 
 public void setExpireTime(Date expireTime) { 
  this.expireTime = expireTime; 
 } 
  
} 

 
2. User1.java的映射文件User1.hbm.xml的內(nèi)部代碼實(shí)現(xiàn):
基礎(chǔ)數(shù)據(jù)庫(kù)中能夠設(shè)置的在Hibernate中同樣提供了設(shè)置的方法,可以使用標(biāo)簽屬性來(lái)設(shè)置具體的映射關(guān)系。
類(lèi)-->表使用class標(biāo)簽,常用屬性:
(1)name:映射實(shí)體類(lèi),它的值需要設(shè)置為需要轉(zhuǎn)化成表的實(shí)體類(lèi)的名稱(chēng),在同步時(shí)會(huì)根據(jù)該屬性查找相應(yīng)的實(shí)體類(lèi)。
(2)table:映射數(shù)據(jù)庫(kù)表的名稱(chēng),如果要映射的表的名稱(chēng)和實(shí)體類(lèi)名稱(chēng)不相同,使用該屬性來(lái)指定映射的表,如果不存在的話(huà)會(huì)根據(jù)該屬性值創(chuàng)建一個(gè)表。
 查看上圖中配置生成的表結(jié)構(gòu),如下圖:

20167590554195.png (522×187)

其中的表名更改為了t_user1;id字段更名為user_id,字段長(zhǎng)度為32位;createTime屬性,映射為數(shù)據(jù)庫(kù)字段create_time,并修改為date類(lèi)型。
屬性-->字段使用id或property標(biāo)簽,常用屬性:
(1)name:功能類(lèi)似于class標(biāo)簽的name,值定實(shí)體類(lèi)的映射屬性名;
(2)column:類(lèi)似于實(shí)體類(lèi)class標(biāo)簽的table,指定映射表的列名稱(chēng),如果不存在將會(huì)創(chuàng)建;
(3)type:指定映射到數(shù)據(jù)庫(kù)中字段的數(shù)據(jù)類(lèi)型,根據(jù)需要查看文檔即可;
(4)generator,它是可選的,用來(lái)為一個(gè)持久類(lèi)生成唯一的標(biāo)識(shí)。

<id name="id" type="long" column="cat_id"> 
  <generator class="org.hibernate.id.TableHiLoGenerator"> 
    <param name="table">uid_table</param> 
    <param name="column">next_hi_value_column</param> 
  </generator> 
</id> 

 
所有的生成器都實(shí)現(xiàn)org.hibernate.id.IdentifierGenerator接口。 這是一個(gè)非常簡(jiǎn)單的接口;某些應(yīng)用程序可以選擇提供他們自己特定的實(shí)現(xiàn)。當(dāng)然, Hibernate提供了很多內(nèi)置的實(shí)現(xiàn)。下面介紹常用的幾種:
(1)identity:返回的標(biāo)識(shí)符是long, short 或者int類(lèi)型的。類(lèi)似于數(shù)據(jù)庫(kù)的自增字段。
(2)sequence:在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的標(biāo)識(shí)符是long, short或者 int類(lèi)型的。在整個(gè)數(shù)據(jù)庫(kù)中自增,而不是單個(gè)的表中自增,需要指定單個(gè)的表中自增需要添加屬性。
(3)uuid:用一個(gè)128-bit的UUID算法生成字符串類(lèi)型的標(biāo)識(shí)符, 這在一個(gè)網(wǎng)絡(luò)中是唯一的(使用了IP地址)。UUID被編碼為一個(gè)32位16進(jìn)制數(shù)字的字符串。類(lèi)似于.NET生成的序列號(hào)。
(4)native:根據(jù)底層數(shù)據(jù)庫(kù)的能力選擇identity, sequence 或者h(yuǎn)ilo中的一個(gè)。靈活的方式,會(huì)根據(jù)使用的數(shù)據(jù)庫(kù)來(lái)確定使用的標(biāo)識(shí)類(lèi)型,MySQL會(huì)選擇identity,Oracle選擇sequence。
(5)assigned:手動(dòng)為實(shí)體類(lèi)制定一個(gè)標(biāo)識(shí)id。這是 <generator>元素沒(méi)有指定時(shí)的默認(rèn)生成策略。
(6)foreign:使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的標(biāo)識(shí)符。通常和<one-to-one>聯(lián)合起來(lái)使用。
開(kāi)發(fā)人員往往習(xí)慣了手動(dòng)配置的方法根據(jù)文檔的說(shuō)明來(lái)編寫(xiě)配置屬性,這樣做很原始,初學(xué)者建議采用手動(dòng)配置的方法,有助于思考。另外還有很多第三方工具,通過(guò)可視化的方法來(lái)配置然后生成xml配置文檔,提高了開(kāi)發(fā)效率,類(lèi)似的工具如:XDoclet、Middlegen和AndorMDA。
 
關(guān)聯(lián)映射之多對(duì)一
上面討論了Hibernate的基本映射,一個(gè)實(shí)體類(lèi)對(duì)應(yīng)著一張表,在相應(yīng)的Hibernate Mapping文件中使用<class>標(biāo)簽映射。并且實(shí)體類(lèi)中的普通屬性對(duì)應(yīng)著表字段,使用<property>標(biāo)簽映射。另外在構(gòu)造實(shí)體類(lèi)時(shí)應(yīng)注意:在實(shí)體類(lèi)中應(yīng)實(shí)現(xiàn)無(wú)參的默認(rèn)的構(gòu)造函數(shù),提供一個(gè)標(biāo)示,建議不要使用final修飾實(shí)體類(lèi),為實(shí)體類(lèi)生成getter和setter方法,最后介紹了幾種主要的主鍵生成策略,接下來(lái)討論多對(duì)一映射。

20167590613848.png (818×282)

這種多對(duì)一關(guān)聯(lián)映射反應(yīng)到對(duì)象模型中它是一種聚合關(guān)系,User是group的一部分,group中存在User,它們兩個(gè)的生命周期是不相同的,可反應(yīng)為下圖:

20167590632092.png (488×252)

那么這種多對(duì)一關(guān)系映射在Hibernate中是如何設(shè)置的呢?下面將會(huì)介紹兩種方法,使用<many-to-one>標(biāo)簽直接映射,或者使用<many-to-one>的cascade級(jí)聯(lián)修改表。
 1、Many-to-one直接映射
從字面意思上就能夠理解,它是指多對(duì)一的關(guān)系,many指的是多的一端,one指的是少的一端,在使用時(shí)往往在多的一端的hbm中使用該標(biāo)簽,并將<many-to-one>的name屬性設(shè)置為該映射文件對(duì)應(yīng)的類(lèi)中的one一端的屬性,如:<many-to-one name="group" column="groupid"></many-to-one>,該標(biāo)簽添加在了User.hbm.xml中,它對(duì)應(yīng)many;標(biāo)簽中的name值為group對(duì)映射one,并且在User.java中會(huì)有一個(gè)名為group的屬性。接下來(lái)看下具體實(shí)現(xiàn)實(shí)現(xiàn)的代碼類(lèi)。
(1)User.java類(lèi)代碼,其中有一個(gè)名為group的屬性,它將會(huì)作為<many-to-one>的one一端的name值。

public class User { 
 private String name; 
 public String GetName(){ 
  return name; 
 } 
 public void SetName(String name){ 
  this.name=name; 
 } 
  
 private Group group; 
 public Group GetGroup(){ 
  return group; 
 } 
 public void SetGroup(Group group){ 
  this.group=group; 
 } 
} 

(2)User.hbm.xml中的<many-to-one>,name的值為User.java中one端的屬性值,它會(huì)在數(shù)據(jù)庫(kù)中生成一個(gè)新列,可以將該新列理解為User表的外鍵。

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 2014-5-14 23:39:25 by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
 <class name="com.hibernate.User" table="USER"> 
  <id name="id" type="java.lang.Long"> 
   <column name="ID" /> 
   <generator class="assigned" /> 
  </id> 
   
  <!-- name的值group為User.java中的一個(gè)對(duì)應(yīng)的one中的一個(gè)屬性,它會(huì)自動(dòng)在表中生成一列,所以使用column對(duì)列進(jìn)行了重命名 --> 
  <many-to-one name="group" column="groupid"></many-to-one> 
   
 </class> 
</hibernate-mapping> 

(3)測(cè)試上面的映射關(guān)系,向表中寫(xiě)入兩個(gè)User對(duì)象分別為user1和user2,命名為張三和李四,使用session保存對(duì)象,向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù),代碼如下:

public void testSave1(){ 
   
  Session session=null; 
  try{ 
   session=GetSession.getSession(); 
   session.beginTransaction(); 
    
   Group group=new Group(); 
   group.SetName("動(dòng)力節(jié)點(diǎn)"); 
    
   User user1=new User(); 
   user1.SetName("張三"); 
   user1.SetGroup(group); 
    
   User user2=new User(); 
   user2.SetName("李四"); 
   user2.SetGroup(group); 
    
   session.save(user1); 
   session.save(user2); 
    
   //會(huì)報(bào)TransientObjectException錯(cuò)誤 
   //在清理緩存時(shí)發(fā)生錯(cuò)誤TransientObjectException 
   //因?yàn)镚roup為T(mén)ransient狀態(tài),沒(méi)有被Session,在數(shù)據(jù)庫(kù)中沒(méi)有匹配的數(shù)據(jù) 
   //而User為Persistent狀態(tài),在清理緩存時(shí)Hibernate在緩存中無(wú)法找到Group對(duì)象 
   //揭露:Persistent狀態(tài)的對(duì)象不能引用Transient狀態(tài)的對(duì)象 
   //該問(wèn)題在testSave2方法中更改 
   session.getTransaction().commit(); 
  }catch(Exception e){ 
    
   e.printStackTrace(); 
   session.getTransaction().rollback(); 
  }finally{ 
   GetSession.CloseSession(session); 
  } 
 } 

但是使用上面的代碼在執(zhí)行寫(xiě)入時(shí)會(huì)報(bào)錯(cuò)TransientObjectException,這是因?yàn)樵诒4鎁ser對(duì)象時(shí)它會(huì)按照<many-to-one>中添加的group去內(nèi)存中查找group對(duì)象,但是上面的代碼中g(shù)roup對(duì)象一直都是在Transient狀態(tài)中,并沒(méi)有被session管理,也就是說(shuō)查找不到session對(duì)象,而User對(duì)象進(jìn)入了Persistent狀態(tài),于是會(huì)報(bào)此錯(cuò)誤。正確的代碼如下:

public void testSave2(){ 
    
 Session session=null; 
 try{ 
  session=GetSession.getSession(); 
  session.beginTransaction(); 
   
  Group group=new Group(); 
  group.SetName("動(dòng)力節(jié)點(diǎn)"); 
  session.save(group);  //此處將group對(duì)象設(shè)置為Persistent對(duì)象 
   
  User user1=new User(); 
  user1.SetName("張三"); 
  user1.SetGroup(group); 
   
  User user2=new User(); 
  user2.SetName("李四"); 
  user2.SetGroup(group); 
   
  session.save(user1); 
  session.save(user2); 
   
  //可以正確的保存數(shù)據(jù) 
  //因?yàn)镚roup和User都是Persistent狀態(tài)的對(duì)象 
  //所以在Hibernate清理緩存時(shí)在session中可以找到關(guān)聯(lián)對(duì)象 
  session.getTransaction().commit(); 
 }catch(Exception e){ 
   
  e.printStackTrace(); 
  session.getTransaction().rollback(); 
 }finally{ 
  GetSession.CloseSession(session); 
 } 
} 

2、級(jí)聯(lián)映射
除了上面所說(shuō)的將group對(duì)象和user對(duì)象都轉(zhuǎn)化到Persistent對(duì)象外,還可以使用cascade級(jí)聯(lián)映射屬性,在<many-to-one>屬性中添加cascade屬性,并復(fù)制為save-update,在group對(duì)象并非為Persistent狀態(tài)時(shí)即可寫(xiě)入數(shù)據(jù)庫(kù)。這樣只需要將兩個(gè)user對(duì)象的Group屬性設(shè)置為同一個(gè)group對(duì)象即可實(shí)現(xiàn)多對(duì)一的映射關(guān)系,此時(shí)User.hbm.xml中對(duì)應(yīng)的內(nèi)容為如下代碼:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 2014-5-14 23:39:25 by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
 <class name="com.hibernate.User" table="USER"> 
  <id name="id" type="java.lang.Long"> 
   <column name="ID" /> 
   <generator class="assigned" /> 
  </id> 
   
  <!-- 級(jí)聯(lián)修改表 --> 
  <many-to-one name="group" column="groupid" cascade="save-update"></many-to-one> 
   
 </class> 
</hibernate-mapping> 

 
Note:cascade設(shè)置為save-update后即可實(shí)現(xiàn)向數(shù)據(jù)庫(kù)中級(jí)聯(lián)修改、添加和刪除,但是具體的級(jí)聯(lián)查詢(xún)操作卻不可以。
對(duì)應(yīng)的測(cè)試配置文件的方法為如下代碼:

//級(jí)聯(lián)cascade 
public void testSave3(){ 
  
 Session session=null; 
 try{ 
  session=GetSession.getSession(); 
  session.beginTransaction(); 
   
  Group group=new Group(); 
  group.SetName("動(dòng)力節(jié)點(diǎn)"); 
   
  User user1=new User(); 
  user1.SetName("張三"); 
  user1.SetGroup(group); 
   
  User user2=new User(); 
  user2.SetName("李四"); 
  user2.SetGroup(group); 
   
  session.save(user1); 
  session.save(user2); 
   
  //沒(méi)有拋出TransientObjectException異常 
  //因?yàn)槭褂昧思?jí)聯(lián) 
  //Hibernate會(huì)首先保存User的關(guān)聯(lián)對(duì)象Group 
  //Group和User就都是Persistent狀態(tài)的對(duì)象了 
  session.getTransaction().commit(); 
 }catch(Exception e){ 
  e.printStackTrace(); 
  session.getTransaction().rollback(); 
 }finally{ 
  GetSession.CloseSession(session); 
 } 
} 

3、對(duì)比升華
 兩種方法同樣實(shí)現(xiàn)了多對(duì)一的映射方法,結(jié)果上是相同的,但在實(shí)現(xiàn)上很不相同。無(wú)論是第一種還是第二種采用的都是<many-to-one>在many一端的映射文件中添加該標(biāo)簽,并將標(biāo)簽的name屬性賦值為該映射文件注冊(cè)的類(lèi)中的one一端的屬性值,這樣就完成了多對(duì)一的基本映射,這是相同點(diǎn)。不同點(diǎn)是直接映射關(guān)系沒(méi)有采用Hibernate字段的屬性,這樣在實(shí)現(xiàn)上較靈活,不但支持增刪改,而且可以查詢(xún);第二種的cascade級(jí)聯(lián)修改則采用了Hibernate提供的方法,此種方法只支持增刪改,并不支持查詢(xún)。

相關(guān)文章

  • 舉例講解Java中synchronized關(guān)鍵字的用法

    舉例講解Java中synchronized關(guān)鍵字的用法

    這篇文章主要介紹了Java中synchronized關(guān)鍵字的用法,針對(duì)synchronized修飾方法的使用作出了簡(jiǎn)單講解和演示,需要的朋友可以參考下
    2016-04-04
  • 淺談SpringBoot資源初始化加載的幾種方式

    淺談SpringBoot資源初始化加載的幾種方式

    在平時(shí)的業(yè)務(wù)模塊開(kāi)發(fā)過(guò)程中,難免會(huì)需要做一些全局的任務(wù)、緩存、線(xiàn)程等等的初始化工作,那么如何解決這個(gè)問(wèn)題呢?本文就來(lái)介紹一下,感興趣的可以了解一下
    2021-07-07
  • Java實(shí)現(xiàn)圖片與二進(jìn)制的互相轉(zhuǎn)換

    Java實(shí)現(xiàn)圖片與二進(jìn)制的互相轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片與二進(jìn)制的互相轉(zhuǎn)換,將圖片轉(zhuǎn)二進(jìn)制再將二進(jìn)制轉(zhuǎn)成圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java Swing JPanel面板的使用方法

    Java Swing JPanel面板的使用方法

    這篇文章主要介紹了Java Swing JPanel面板的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 基于SpringBoot + Redis實(shí)現(xiàn)密碼暴力破解防護(hù)

    基于SpringBoot + Redis實(shí)現(xiàn)密碼暴力破解防護(hù)

    在現(xiàn)代應(yīng)用程序中,保護(hù)用戶(hù)密碼的安全性是至關(guān)重要的,密碼暴力破解是指通過(guò)嘗試多個(gè)密碼組合來(lái)非法獲取用戶(hù)賬戶(hù)的密碼,為了保護(hù)用戶(hù)密碼不被暴力破解,我們可以使用Spring Boot和Redis來(lái)實(shí)現(xiàn)一些防護(hù)措施,本文將介紹如何利用這些技術(shù)來(lái)防止密碼暴力破解攻擊
    2023-06-06
  • Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)

    Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)

    這篇文章主要介紹了Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot接收參數(shù)使用的注解實(shí)例講解

    SpringBoot接收參數(shù)使用的注解實(shí)例講解

    這篇文章主要介紹了詳解SpringBoot接收參數(shù)使用的幾種常用注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • springmvc整合ssm配置的詳細(xì)代碼

    springmvc整合ssm配置的詳細(xì)代碼

    今天通過(guò)實(shí)例代碼給大家介紹了springmvc整合ssm配置的詳細(xì)方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • 簡(jiǎn)單學(xué)習(xí)Java抽象類(lèi)要點(diǎn)及實(shí)例

    簡(jiǎn)單學(xué)習(xí)Java抽象類(lèi)要點(diǎn)及實(shí)例

    這篇文章主要介紹了Java抽象類(lèi)要點(diǎn)及實(shí)例,有需要的朋友可以參考一下
    2014-01-01
  • java批量導(dǎo)入Excel數(shù)據(jù)超詳細(xì)實(shí)例

    java批量導(dǎo)入Excel數(shù)據(jù)超詳細(xì)實(shí)例

    這篇文章主要給大家介紹了關(guān)于java批量導(dǎo)入Excel數(shù)據(jù)的相關(guān)資料,EXCEL導(dǎo)入就是文件導(dǎo)入,操作代碼是一樣的,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-08-08

最新評(píng)論