Spring mvc新手入门(9)-spring mvc + spring jdbc 查询功能详解

2014-12-3 14:12:21     21 人阅读    

Spring jdbc提供了非常强大的查询功能.

JdbcTemplate中的封装了很多实用的方法。 下面介绍一下最常用的几种方法,基本上在开发中都是使用这些.


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

1.查询结果是结果集list,spring提供了专门的 JdbcTemplate.queryForList 方法
                       简单的查询list方法如下
                       this.getJdbcTemplate().queryForList(sql);
            填充?参数的查询list方法如下
  this.getNamedParameterJdbcTemplate().queryForList(sql, paramMap);
               paramMap是存放参数值的map集合,或者Object类型的集合都可以
        
                     返回的结果集是 List<Map<String,Object>>类型的,没一条数据都是一个map,map的key值字段名,value是字段值
                     (这里先简单介绍,后面的代码开发中会有详细的使用教程)

                     具体的代码参考
                       
                

 public List queryTagsList(){
  try {
   String strSQL="SELECT * FROM (SELECT a.*,CASE WHEN htmltime IS NULL THEN '未静态' ELSE '已静态' END nohtml ,CASE WHEN  htmltime IS  NULL  OR  lastUseTime > htmltime THEN '需重新静态' ELSE '无需重新静态' END reHtml FROM t_cms_site_keyword a) b ORDER BY b.nohtml DESC,b.reHtml DESC ";
   
   return this.getJdbcTemplate().queryForList(strSQL);
   

  } catch (Exception e) {
   
  }
  return new ArrayList();
 }


 public String showLmDirOptions(String lmgs,String dqgs,StringBuffer str,int num){
  List _list=this.getNpjtA().getJdbcOperations().queryForList("select * from t_cms_site_lm where status=1 and lmgs=? order by pxxh", new Object[]{lmgs});
  for(int i=0;i<_list.size();i++){
   Map map = (Map)_list.get(i);
   String _lmgs = map.get("lmbh").toString();
   String name = map.get("lmmc").toString();
   xxx xx
  }
  return str.toString();
       }

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

         

      public String testQueryForObject(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;
 }
 

这个方法不是很常用,因为spring jdbc已经提供了很多返回特使参数类型的方法;
             queryForInt
           queryForLong
           等等

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

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


3.查询结果是结果Int类型 (queryForInt方法),这个方法用的非常广泛

public boolean login() {
  String name = map.get("name").toString();
  String pass = map.get("pass").toString();
  
  String querySql = "select count(1) from user where name='"+name+"' and pass ='"+pass+"'";
  int count = this.getJdbcTemplate().queryForInt(querySql);
  
  if(count >0)
  {
   return true;
  }else
  {
   return false;
  }
 }

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

 

4.查询结果返回Map类型 (queryForMap方法),查询单挑记录时就使用该方法,使用非常广泛
 

/**
  * 显示信息类型明细
  * @return
  */
 @SuppressWarnings("unchecked")
 public Map showType(){
  try {
   NamedParameterJdbcTemplate npjt = this.getNpjtN();
   Map _map = npjt.queryForMap("select * from t_cms_site_info_lx where guid=:guid", map); 
   
  } catch (EmptyResultDataAccessException e) {
    xxx
  } catch (IncorrectResultSizeDataAccessException e) {
    xxx
  } catch (Exception e) {
   xxx
  }
  return jjd.getData();
 }

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

 

 


原文地址:http://www.itmmd.com/201412/249.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

node.js依赖的 JavaScript基础 类型   上一篇
下一篇  Spring mvc新手入门(7)-Spring mvc 实现用户登录

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!