JdbcTemplate中的封裝了很多實用的方法。
首先來介紹一下用 JdbcTemplate來查詢數據的方法。 ?
?
1.返回指定對象類型的List ? (query方法) ?
?
看代碼:
?
- public ?List?getProductModle(String?value)? throws ?DataAccessException?{??
- ????????List?resultList?=? new ?ArrayList();??
- ????????List?args?=? new ?ArrayList();??
- ????????String?sql?=? "select?F_CPUT_MOD_ID?as?id?,F_CPUT_MOD_NAME?as?name?from?CPUT_MOD_T" +??
- ???????????? "?WHERE?F_MARKET_LOCA_ID?=????order?by?F_CPUT_MOD_ID" ;??
- ???????? if (StringUtils.isNotEmpty(value)){??
- ????????????args.add(value);??
- ????????}??
- ????????resultList?=? this .getJdbcTemplate().query(sql,args.toArray(),??
- ???????????????????????????????????????????? new ?ProductModleRowMapper());??
- ???????? return ?resultList;??
- ????}??
- ???? /** ?
- ?????*?@author?rockjava ?
- ?????*?@description?封裝產品型號結果集 ?
- ?????*/ ??
- ???? private ??? class ??ProductModleRowMapper?? implements ??RowMapper{??
- ??
- ???????? public ?Object?mapRow( final ?ResultSet?rs,? final ? int ?rowNum)? throws ?SQLException?{??
- ????????????ProductModleVO?vo?=? new ?ProductModleVO();??
- ????????????vo.setProModleId((String)rs.getString( "id" ));??
- ????????????vo.setProModleName((String)rs.getString( "name" ));??
- ???????????? return ?vo;??
- ????????}??
- ??????????
- ????}??
?
?
?
?
這里實現了RowMapper類的mapRow方法,用來把查詢到的結果集用指定的類來封裝,最后返回一個List,List中裝著
?
我們自定的值對象。
?
2.返回指定類型的結果
?
(queryForObject方法)
?
- public ?String?getCurrentPhase(String?arg)? throws ?DataAccessException?{??
- ????????String?currentPhase?=? "" ;??
- ????????String?sql= "select?F_CURR_YEAR?from?COMPETITION_BASE_T?where?F_COMPETITION_ID=?" ;??
- ????????Object[]?o?={arg};???
- ???????? try ?{??
- ????????????currentPhase?=?(String) this .getJdbcTemplate().queryForObject(sql,o,?String. class );??
- ????????}? catch ?(Exception?e)?{??
- ????????????currentPhase?=? "" ;??
- ????????????e.printStackTrace();??
- ????????}??
- ??????????
- ???????? return ?currentPhase;??
- ????}??
?
在這個例子中,用到了queryForObject這個方法,其中第一個參數是要執行的sql,第二個參數是Object數組類型(其中裝的是sql腳本用到
?
的參數),第三個參數就是要制定返回結果的類型(這里我定義的是String類型)
?
?
3.查詢結果返回Int類型
?
(queryForInt方法)
?
- public ? boolean ?doCheckCompete(Map?args)? throws ?DataAccessException?{??
- ????????....省略代碼??
- ??????????
- ???????? /**sql腳本用到的參數集合*/ ??
- ????????Object[]?args?=? new ?Object[]{??
- ????????????????companyId,??????????
- ????????????????competitionId,??????
- ????????????????marketType,?????????
- ????????????????martID,?????????????
- ????????????????currentPhase????????
- ????????};??
- ????????StringBuffer?sql?=? new ?StringBuffer();??
- ????????sql.append( "SELECT???COUNT?(?*?)?" );??
- ????????sql.append( "FROM???BEFOR_ORDER_T?t?" );??
- ????????sql.append( "WHERE???T.F_COMPANY_ID?=???" );??
- ????????sql.append( "?and?T.F_COMPETITION_ID=??" );??
- ????????sql.append( "?and?T.F_MARKET_LOCA_ID=??" );??
- ????????sql.append( "?and?T.F_MARKET_SCOPE_ID=??" );??
- ????????sql.append( "?and?T.F_CURRENT_PHASE?=???" );??
- ???????? int ?i= 0 ;??
- ????????i?=? this .getJdbcTemplate().queryForInt(sql.toString(),?args);??
- ???????? if (i> 0 ){??
- ???????????? return ? true ;??
- ????????}??
- ???????? return ? false ;??
- ????}??
?
這里用的是queryForInt方法返回int類型。
?
4.查詢結果返回Map類型 ? (queryForMap方法)
?
- String?sql?=? "select?T.F_COMPETE_ORDER_STATE?,T.F_GENERATED_ORDERS?" ?+??
- ???????? "from?COMPETITION_BASE_T?t?" ?+??
- ???????? "where?T.F_COMPETITION_ID?=??" ;??
- ??
- Map?state?=?(Map) this .getJdbcTemplate().queryForMap(sql, new ?Object[]{args});??
- ??
- String?compete_order_state?=?state.get( "F_COMPETE_ORDER_STATE" ).toString();??
- ??
- String?generated_orders?=?state.get( "F_GENERATED_ORDERS" ).toString();??
?
?
返回后的map中的鍵值對應的是select語句中的字段名字。 ?
5.查詢結果集直接返回list
?
(queryForList方法)
?
- List?list?=? new ?ArrayList();??
- String?sql= "select?T.F_OFF_PERIOD,T.F_PROBABILITY?from?ORDER_OFF_PERIOD_T?t?" +??
- ???? "where?T.F_COMPETITION_ID=?" ;??
- Object[]?args?={arg};???
- try ?{??
- ????list?=? this .getJdbcTemplate().queryForList(sql,?args);??
- }? catch ?(Exception?e)?{??
- ????e.printStackTrace();??
- }??
- ...代碼省略??
- ??
- String?a?=?(String)(((Map)?list.get( 0 )).get( "F_PROBABILITY" ));??
- String?b?=?(String)(((Map)?list.get( 1 )).get( "F_PROBABILITY" ));??
- String?c?=?(String)(((Map)?list.get( 2 )).get( "F_PROBABILITY" ));??
?
返回的List中裝載的是Map對象,沒個map對象中的鍵值對應sql腳本的字段名字。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
