jdbctemplate做為一種常用的和資料庫互動的方式,用起來很方便。但是當查詢結果為map時要求查詢的結果有且僅有一條資料。接下來我們看看原始碼到底是如何處理的。
重點看第三個截圖,如何處理查詢結果的,如果查詢結果為空,則throw new emptyresultdataacces***ception(1);,如果結果大於1條,則throw new incorrectresultsizedataacces***ception(1, results.size());
我們看一下這兩個異常,發現emptyresultdataacces***ception是incorrectresultsizedataacces***ception的乙個子類。
當丟擲這個異常後,我們在控制台上看到的就是下面這個方法列印的語句。
那麼,如何在dao層該如何處理呢,因為我們會在service中處理事務,所有會將dao層的異常拋到service,但是查詢map為空時是合理的,所以我們一般會捕獲emptyresultdataacces***ception,map為多條資料時我們認為不合理,一般會丟擲去 ,接下來我們看看寫的**,一般情況下我們只捕獲emptyresultdataacces***ception,返回null。incorrectresultsizedataacces***ception異常我們不進行捕獲,會直接丟擲處理後返回給前端頁面。
public map
querydetail
(string id)
throws exception );
}catch
(emptyresultdataacces***ception e)
catch
(incorrectresultsizedataacces***ception e)
}
一般我們這樣寫即可處理業務需求,在實際開發中應根據具體業務進行處理。
public map
querydetail
(string id)
throws exception );
}catch
(emptyresultdataacces***ception e)
}
使用 JdbcTemplate 查詢及更新資料庫
通過對 jdbctemplate 源 的研讀,可以看到,在 jdbctemplate 提供了很多用來查詢的數 據庫,比如 queryformap queryforlong queryforint queryforlist 等等。這裡只是簡單的進行示例說明,使用 queryforlist 查詢的示例 ...
python mysqldb 查詢返回字典結構
mysqldb預設查詢結果都是返回tuple,輸出時候不是很方便,必須按照0,1這樣讀取,無意中在網上找到簡單的修改方法,就是傳遞乙個cursors.dictcursor就行。預設程式 import mysqldb db mysqldb.connect host localhost user roo...
spring教程 JdbcTemplate詳解
jdbctemplate模板與dbutils工具模擬較類似.jdbc org.springframework.jdbc.core.jdbctemplate hibernate3.0 org.springframework.orm.hibernate3.hibernatetemplate ibatis...