我現在已經瞭解到,爲了以多對多的關係插入到橋接表中,我必須使用get生成的鍵來獲取自動增量ID。我應該如何通過獲取生成的密鑰插入自動增量ID?
我現在面臨的問題我認爲是我的代碼設計。
我使用的是DAO,DAOImpl和普通的jdbc。
在我tutorDAOImpl,我有這樣的代碼:
public void insertTutor(tutor m) throws MyDataException { //
openConnection();
try {
connection.setAutoCommit(false);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String qry = INSERT_QRY;
try (
PreparedStatement ps = connection.prepareStatement(qry, Statement.RETURN_GENERATED_KEYS)) {;
// ps = connection.prepareStatement(qry, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, m.getName());
ps.setString(2, m.getNRIC());
ps.setString(3, m.getEmail());
ps.executeUpdate();
connection.commit();
ResultSet tableKeys = ps.getGeneratedKeys();
while(tableKeys.next())
tableKeys.next();
int tutor_id = tableKeys.getInt(1);
m.setTutor_id(tutor_id);
System.out.println(tutor_id);
} catch (SQLException e) {
e.printStackTrace();
throw new MyDataException("DB Error");
} finally {
if (ps != null) {
closeConnection();
}}}}
我再重複了subjectDAO相同。
然後我使用控制器讀取參數值等,並使用服務類插入此DAOImpl。
現在,我應該在tutorDAOImpl和subjectDAOImpl中創建一個獲取Int方法,以便通過控制器將兩個Ids插入到第三個表中。
但是,我發現我會重複int方法中的void insert(tutor m)中的大部分代碼,以獲得Ids的返回值。
我不知道是否有更好的方法來編寫代碼。希望有一些建議。韓國社交協會。
你爲什麼認爲插入導師,然後是主題會是錯誤的? – Mureinik
因爲我不知道如何處理tutor_subject鏈接表。我希望只要有一個插入語句,tutor_subject也會填充相關信息。 –