使用JdbcTemplate.queryForObject 的注意點


 在使用Spring的時候,數據庫訪問相關的操作都是通過Spring的JdbcTemplate解決的,除了要碼sql語句,還要填充Bean對象之外.在這個過程中,我使用了JdbcTemplate的幾個方法,其中在使用queryForObject方法時,發現了一個錯誤.

private static final String SQL_SELECT_INSCHARACTER =  
    " SELECT st_inscharactername " +  
    "   FROM wm05_m_comp_inscharacter "+  
    "  WHERE id_product = :productiD " +  
    "    AND id_company = :companyiD " +  
    "    AND id_abicdif = :abicfundId " +  
    "    AND id_inscharacter = :inscharacterId ";  

 

 public String getInsCharacter(String productId, String companyId, String abicfundId, String inscharacterId) {  
    Object[] params = new Object[] { productId, companyId, abicfundId, inscharacterId };  
    String stinscharactername = getJdbcTemplate().queryForObject(SQL_SELECT_INSCHARACTER, params, String.class);  
    if (!StringUtil.isEmpty(stinscharactername)) {  
      return stinscharactername;  
    } else {  
      return "保証利率(%)";  
    }  
}

 

queryForObject 方法需要傳入三個參數,第一個參數是該方法需要執行的SQL語句。

        數組params為執行動態SQL時需要傳入的參數,參數順序與SQL中的參數順序相同。

        最后一個參數是返回值的類型(只能是基本數據類型的封裝類,如Integer、String)

        如果想使用自定義的類型的返回值:new BeanPropertyRowMapper(StoreDto.class) (當POJO對象和數據看表字段完全對應或駝峰式與下划線對應時BeanPropertyRowMapper類會根據構造函數中的class來自動填充數據。)

需要注意的是:queryForObject方法默認返回值不為空,如果可以肯定結果集不為空可以不做處理,否則需要用

        try……catch代碼塊進行異常的捕獲與處理。

public String getInsCharacter(String productId, String companyId, String abicfundId, String inscharacterId) {  
  try {  
    Object[] params = new Object[] { productId, companyId, abicfundId, inscharacterId};  
    String stinscharactername = getJdbcTemplate().queryForObject(SQL_SELECT_INSCHARACTER, params, String.class);  
    if(!StringUtil.isEmpty(stinscharactername)){  
      return stinscharactername;  
    }  
  } catch (DataAccessException e) {  
    return "保証利率(%)";  
  }  
  return "保証利率(%)";  
}  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM