Spring jdbcTemplate应用(一)

系统 1515 0

JdbcTemplate中的封装了很多实用的方法。

首先来介绍一下用 JdbcTemplate来查询数据的方法。  

 

1.返回指定对象类型的List   (query方法)  

 

看代码:

 

Java代码       收藏代码
  1. public  List getProductModle(String value)  throws  DataAccessException {  
  2.         List resultList =  new  ArrayList();  
  3.         List args =  new  ArrayList();  
  4.         String sql =  "select F_CPUT_MOD_ID as id ,F_CPUT_MOD_NAME as name from CPUT_MOD_T" +  
  5.              " WHERE F_MARKET_LOCA_ID = ?  order by F_CPUT_MOD_ID" ;  
  6.          if (StringUtils.isNotEmpty(value)){  
  7.             args.add(value);  
  8.         }  
  9.         resultList =  this .getJdbcTemplate().query(sql,args.toArray(),  
  10.                                              new  ProductModleRowMapper());  
  11.          return  resultList;  
  12.     }  
  13.      /**  
  14.      * @author rockjava  
  15.      * @description 封装产品型号结果集  
  16.      */   
  17.      private     class   ProductModleRowMapper   implements   RowMapper{  
  18.   
  19.          public  Object mapRow( final  ResultSet rs,  final   int  rowNum)  throws  SQLException {  
  20.             ProductModleVO vo =  new  ProductModleVO();  
  21.             vo.setProModleId((String)rs.getString( "id" ));  
  22.             vo.setProModleName((String)rs.getString( "name" ));  
  23.              return  vo;  
  24.         }  
  25.           
  26.     }  

 

 

 

 

这里实现了RowMapper类的mapRow方法,用来把查询到的结果集用指定的类来封装,最后返回一个List,List中装着  

我们自定的值对象。  


2.返回指定类型的结果   (queryForObject方法)

 

Java代码       收藏代码
  1. public  String getCurrentPhase(String arg)  throws  DataAccessException {  
  2.         String currentPhase =  "" ;  
  3.         String sql= "select F_CURR_YEAR from COMPETITION_BASE_T where F_COMPETITION_ID=?" ;  
  4.         Object[] o ={arg};   
  5.          try  {  
  6.             currentPhase = (String) this .getJdbcTemplate().queryForObject(sql,o, String. class );  
  7.         }  catch  (Exception e) {  
  8.             currentPhase =  "" ;  
  9.             e.printStackTrace();  
  10.         }  
  11.           
  12.          return  currentPhase;  
  13.     }  

 

在这个例子中,用到了queryForObject这个方法,其中第一个参数是要执行的sql,第二个参数是Object数组类型(其中装的是sql脚本用到  

的参数),第三个参数就是要制定返回结果的类型(这里我定义的是String类型)  

 


3.查询结果返回Int类型   (queryForInt方法)

 

Java代码       收藏代码
  1. public   boolean  doCheckCompete(Map args)  throws  DataAccessException {  
  2.         ....省略代码  
  3.           
  4.          /**sql脚本用到的参数集合*/   
  5.         Object[] args =  new  Object[]{  
  6.                 companyId,          
  7.                 competitionId,      
  8.                 marketType,         
  9.                 martID,             
  10.                 currentPhase        
  11.         };  
  12.         StringBuffer sql =  new  StringBuffer();  
  13.         sql.append( "SELECT   COUNT ( * ) " );  
  14.         sql.append( "FROM   BEFOR_ORDER_T t " );  
  15.         sql.append( "WHERE   T.F_COMPANY_ID = ? " );  
  16.         sql.append( " and T.F_COMPETITION_ID=? " );  
  17.         sql.append( " and T.F_MARKET_LOCA_ID=? " );  
  18.         sql.append( " and T.F_MARKET_SCOPE_ID=? " );  
  19.         sql.append( " and T.F_CURRENT_PHASE = ? " );  
  20.          int  i= 0 ;  
  21.         i =  this .getJdbcTemplate().queryForInt(sql.toString(), args);  
  22.          if (i> 0 ){  
  23.              return   true ;  
  24.         }  
  25.          return   false ;  
  26.     }  

 
这里用的是queryForInt方法返回int类型。

 

4.查询结果返回Map类型   (queryForMap方法)

 

Java代码       收藏代码
  1. String sql =  "select T.F_COMPETE_ORDER_STATE ,T.F_GENERATED_ORDERS "  +  
  2.          "from COMPETITION_BASE_T t "  +  
  3.          "where T.F_COMPETITION_ID = ?" ;  
  4.   
  5. Map state = (Map) this .getJdbcTemplate().queryForMap(sql, new  Object[]{args});  
  6.   
  7. String compete_order_state = state.get( "F_COMPETE_ORDER_STATE" ).toString();  
  8.   
  9. String generated_orders = state.get( "F_GENERATED_ORDERS" ).toString();  

 

 

返回后的map中的键值对应的是select语句中的字段名字。  



5.查询结果集直接返回list   (queryForList方法)

 

Java代码       收藏代码
  1. List list =  new  ArrayList();  
  2. String sql= "select T.F_OFF_PERIOD,T.F_PROBABILITY from ORDER_OFF_PERIOD_T t " +  
  3.      "where T.F_COMPETITION_ID=?" ;  
  4. Object[] args ={arg};   
  5. try  {  
  6.     list =  this .getJdbcTemplate().queryForList(sql, args);  
  7. catch  (Exception e) {  
  8.     e.printStackTrace();  
  9. }  
  10. ...代码省略  
  11.   
  12. String a = (String)(((Map) list.get( 0 )).get( "F_PROBABILITY" ));  
  13. String b = (String)(((Map) list.get( 1 )).get( "F_PROBABILITY" ));  
  14. String c = (String)(((Map) list.get( 2 )).get( "F_PROBABILITY" ));  


  返回的List中装载的是Map对象,没个map对象中的键值对应sql脚本的字段名字。

Spring jdbcTemplate应用(一)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论