最近的專案中由於只進行查詢,所以使用了jdbctemplate來直接操作sql進行持久層的操作,初次接觸jdbctemplate,從最開始的什麼都不知道到現在基本方法都大致知道什麼意思,特此記錄一下
jdbctemplate方法常用的大約有這個幾個
1. queryforint()/queryforlong()
2. queryforobject()
3. queryforlist()
4. queryformap()
5. query()
1. queryforint()/queryforlong()
使用queryforint()主要是為了獲取資料庫中記錄總數,獲取指定條件的記錄數等,不需要對應列名,只需要返回乙個資料即可.queryforlong()是同理的.
如果你想查詢到結果並命名的話,你可以使用queryformap(),查詢到的值更改列名為別名,然後使用map.get("別名")來獲取.
2. queryforobject()
其實本質上queryforobject()和queryforint()是一直的,只不過可以返回乙個非int的值,比如你查詢指定id的物件的某乙個屬性,可以使用object進行接收,而不能使用int來接收.
(6-25更新)舉個例子:
string sql = "select name from user where id = ?";
return jdbctemplate.queryforobject(sql,string.class,id);
//需要注意的是:第乙個引數:sql語句,第二個引數:你查詢的結果的返回值型別,第三個引數是:你傳入的引數
3. queryforlist()
在我們需要得到乙個資料集合的時候,我們通常使用queryforlist()進行。返回的結果是乙個list結構的集合。其中乙個map代表了一行資料,使用列名作為key,使用值作為value。
並且queryforlist()會預設自動封裝。不需要手動進行資料封裝。
4. queryformap()
queryformap()是查詢一條資料的時候使用的封裝。將列名作為key,值作為value。封裝成乙個map返回結果。
5. query()
query()進行查詢的時候,必須自行對結果集進行取出並封裝。
缺點是:你需要手動進行封裝資料。
**如下:
stringbuilder sql = new stringbuilder();
listparamlist = new arraylist<>();
if (!stringutils.isempty(id))
return this.jdbctemplate.query(sql.tostring(),
(rs, rownum) -> , paramlist.toarray());
總的來說,jdbctemplate對於查詢來說,如果你對sql比較精通,使用起來非常方便,靈活。 170830 關於JdbcTemplate的知識點
1.spring提供的乙個運算元據庫的技術jdbctemplate,是對jdbc的封裝。語法風格非常接近dbutils。jdbctemplate可以直接運算元據庫,加快效率,而且學這個jdbctemplate也是為宣告式事務做準備,畢竟要對資料庫中的資料進行操縱!jdbctemplate中並沒有提供...
spring教程 JdbcTemplate詳解
jdbctemplate模板與dbutils工具模擬較類似.jdbc org.springframework.jdbc.core.jdbctemplate hibernate3.0 org.springframework.orm.hibernate3.hibernatetemplate ibatis...
JDBCTemplate 事務控制
專案場景 批量匯入,前端解析excel資料,然後批量傳入到後端,後端根據資料進行解析,然後在表和關聯表進行操作。當對一行資料操作時,如果有錯誤資訊則捕獲異常,則不插入該條資訊,繼續走下。excel單行資料出錯時,要進行回滾,不僅要在單錶中回滾,還要在關聯表中回滾。問題 如何控制事務?如果單錶插入資料...