2017-01-03 4 views
-1

私はIDのリストを持つテキストファイルを持っています。そのIDを読み込み、DBで関連IDを検索し、特定の列を新しい値で更新する必要があります。テキストファイルを読み込んでデータベースに更新するJavaコード

+3

はSOにようこそ。あなたにはうってつけですが、なぜ私たちに語っていますか?してください、[ask]を参照してください – AxelH

+0

私たちに今までのurコードを表示 – Abhishek

+0

あなたが何をしてくれたのか、何処にこだわっていますか? – yakobom

答えて

1

私はあなたに何をすべきかの簡単なデモを提供しようとしました。

ここでは、コードです:

public class Test { 

private static final String FILENAME = "D:/Idfile.txt"; // Your Id file 

private SessionFactory sessionFactory; 

public static void main(String[] args) { 

    ApplicationContext context = new ClassPathXmlApplicationContext("resource/spring/applicationContext.xml"); 

    Test test = new Test(); 
    test.readFile(); 

} 

private void readFile() { 

    BufferedReader br = null; 
    FileReader fr = null; 

    try { 

     fr = new FileReader(FILENAME); // You read the file here 
     br = new BufferedReader(fr); 

     String sCurrentLine; 

     br = new BufferedReader(new FileReader(FILENAME)); 

     while ((sCurrentLine = br.readLine()) != null) { 
      if (!checkIfIdExists(sCurrentLine)) { 
       System.out.println("Some problem"); // Handle the exception 
                // scenario here. 
      } 
     } 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } finally { 

     try { 

      if (br != null) 
       br.close(); 

      if (fr != null) 
       fr.close(); 

     } catch (IOException ex) { 

      ex.printStackTrace(); 

     } 

    } 

} 



private boolean checkIfIdExists(String sCurrentLine) { 
    Session session = null; 
    Transaction tx = null; 
    try { 
     session = sessionFactory.openSession(); 
     session.setFlushMode(FlushMode.AUTO); 
     tx = session.beginTransaction(); 

     String sql = "SELECT text_file_id, primary_key from demo_table where text_file_id = :text_file_id "; // Check if the ID is present 
     SQLQuery query = session.createSQLQuery(sql); 
     query.addEntity(LookUpDemoTable.class); 
     query.setParameter("text_file_id", sCurrentLine); 
     List results = query.list(); 
     if (results.size() != 0) { 


      for (Iterator<LookUpDemoTable> it = results.iterator(); it.hasNext();) { 

       LookUpDemoTable lookUpDemoTableToUpdate = new LookUpDemoTable(); 
       LookUpDemoTable lookUpDemoTable = it.next(); 
       lookUpDemoTableToUpdate.setPrimaryKey(lookUpDemoTable.getPrimaryKey()); 
       session.saveOrUpdate(lookUpDemoTableToUpdate); // Incase the ID is present 
       tx.commit(); 
      } 

     } else { 
      LookUpDemoTable lookUpDemoTableToInsert = new LookUpDemoTable(); 
      lookUpDemoTableToInsert.setPrimaryKey(new Long(System.currentTimeMillis()).toString()); 
      lookUpDemoTableToInsert.setTextFileId(sCurrentLine); 
      session.save(lookUpDemoTableToInsert); // Incase the ID is not present 
      tx.commit(); 
     } 
     return true; 

    } catch (Exception e) { 
     tx.rollback(); 
    } finally { 
     if (null != session) { 
      session.close(); 
     } 
    } 

    return false; 

    } 
} 

あなたがapplicationContext.xml意志とmain()方法で述べたパスに入れLookUpDemoTableクラス

@Entity 
@Table(name = "demo_table") 
public class LookUpDemoTable { 

@Id 
@Column(name = "primary_key") 
private String primaryKey; 

@Column(name = "text_file_id") 
private String textFileId; 

public String getPrimaryKey() { 
    return primaryKey; 
} 

public void setPrimaryKey(String primaryKey) { 
    this.primaryKey = primaryKey; 
} 

public String getTextFileId() { 
    return textFileId; 
} 

public void setTextFileId(String textFileId) { 
    this.textFileId = textFileId; 
} 

} 

、それは、resource/spring/applicationContext.xml

あなたapplicationContext.xmlですが、次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:batch="http://www.springframework.org/schema/batch"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
xsi:schemaLocation="http://www.springframework.org/schema/batch 
    http://www.springframework.org/schema/batch/spring-batch-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/jdbc 
    http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> 

<context:annotation-config /> 
<import resource="database.xml" /> 

<bean id="test" 
    class="Test"> <!-- Your fully qualified class name --> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
</beans> 

あなたdatabase.xmlのようになりますあなたのDBの詳細とそのannotatedClasses

あなたIdFileとしてLookUpDemoTableクラスで定義されたSessionFactoryの豆を持っている必要があります。このことができます

IDAB12 
IDAC24 
IDAD89 

希望。

また、このリンクを参照することができます

How to read a txt file in JAVA

+0

あなたの助けを借りて私に問題を指導してください – Keerthisairam

+0

出力を提供すると、私は出力の完全なセット – Keerthisairam

関連する問題