spring中JdbcTemplate使用

1:建立dao

 

public abstract interface DAO
{


  public abstract void setDataSource(DataSource paramDataSource);

 

  public abstract DataSource getDataSource();


}

 

 

2:建立jdbcdao

 

 public abstract class JdbcDAO


   implements DAO, Serializable
 {


  protected DataSource dataSource;


   protected JdbcTemplate jt;


   public Object fetchObject(List list, int row, String fieldName)
  {


     int n = list.size();


    if ((n < 1) || (row >= n))
     return null;
   Map map = (Map)list.get(row);
   return ((map == null) ? null : map.get(fieldName));
  }

 

// 返回值只有一行时,取得这一行中某个字段的值,由此jtqueryForList返回的list中每一个值都是一个map(字段,值)


  public Object fetchObject(List list, String fieldName)
  {
  return fetchObject(list, 0, fieldName);
   }
 


   public DataSource getDataSource()
   {
   return this.dataSource;
 }


   public JdbcTemplate getJt()
  {
    return this.jt;
  }


 public void setDataSource(DataSource dataSource)
  {


   this.dataSource = dataSource;
   this.jt = new JDBCTemplate(this.dataSource);  //spring注入数据源的同事设置jdbcTemplate的值


}

 

 

}

 

3:使用jdbcTemplate

 

public class SettleTallyGateway extends JdbcDAO implements TallyGateway {
 /** 利随本清扣收策略参数,由spring注入 */
 private DischargePolicy dischargePolicy;
 /** 是否为老结算 */
 private boolean oldSettle;

 DateHelper dateHelper = DateHelper.newInstance(true);

 public SettleTallyGateway() {

 }

 public DischargePolicy getDischargePolicy() {
  return dischargePolicy;
 }

 public void setDischargePolicy(DischargePolicy dischargePolicy) {
  this.dischargePolicy = dischargePolicy;
 }

 public boolean isOldSettle() {
  return oldSettle;
 }

 public void setOldSettle(boolean oldSettle) {
  this.oldSettle = oldSettle;
 }

 

 public Double getAcntRval(String bz, String km, String no, Date edate) {
  Double result = new Double(0);
  StringBuffer sql = new StringBuffer("declare @Rval numeric(15,2) \n");
  sql.append("execute Ns_St_GetRVal '").append(bz).append("','");
  sql.append(km).append("','");
  sql.append(no).append("',");
  sql.append(dateHelper.enclose(edate)).append(",").append("@Rval OUTPUT,'0' \n");
  sql.append("select @Rval as Rval");

  try {
   List list = jt.queryForList(new String(sql));
   Object o = this.fetchObject(list, "Rval");   
   if (o instanceof Number) {
    Number n = (Number) o;
    result = new Double(n.toString());      
   }
  } catch (DataAccessException e) {
   System.out.println(e.getMessage());
   e.printStackTrace();
  }
  return result;
 }
 


 private Account getAccount(String accountNo){
     String sql = "select cnt.no as accountNo,cnt.kmh,cnt.bz,cnt.brno,cnt.quota as quota_ from cntacnt cnt where cnt.no='"+accountNo+"'";
     List list = jt.query(sql, new RowMapper() {
            public Object mapRow(ResultSet rs, int index) throws SQLException {
             Account account = new Account();
             account.setAccountNo(rs.getString("accountNo"));
             account.setSubject(rs.getString("kmh"));
             account.setBz(rs.getString("bz"));
             account.setQuota(rs.getDouble("quota_"));
                return account;
            }
        });
     return list.size()==0?null:(Account)list.get(0);
    }

 

 

 
 /**
   * @param key
  *            属性Key
  * @return 属性值
  */
 public String getProperty(String key) {
  String paramId = getParamId(key);
  String sql = "select ParamVal from WFPar where ParamNo='" + paramId
    + "'";
  try {
   return (String) jt.queryForObject(sql, String.class);
  } catch (DataAccessException e) {
   return null;
  }
 }

 /**
  *
  * @param sheetId
  * @return
  */
 public Date getSheetDate(Integer sheetId) {
  String sql = "select ActDate from CntBuss  where SheetId="
    + sheetId;
  try {
   String date = (String) jt.queryForObject(sql, String.class);
   return TextFormat.parseDate(date);
  } catch (DataAccessException e) {
   return null;
  }

 }

 /**
  * @param key
  *            属性Key
  * @param value
  *            属性值
  * @return
  */
 public void setProperty(String key, String value) {
  String paramId = getParamId(key);
  String where = "ParamNo='" + paramId + "'";
  StringBuffer s = new StringBuffer();
  s.append("if exists(select * from WFParam where ").append(where)
    .append(") ").append("\n");
  s.append("   update WFParam set ParamVal=").append(
    TextFormat.enclose(value)).append(" where ").append(where)
    .append("\n");
  // 2007-12-17修改APPNO=fb1
  s
    .append(
      "else insert into WfParam (ParamNo,AppNo,ParamName,ParamVal,ParamTxt,InpMode,ValList)")
    .append("\n");
  s.append(" values(").append(TextFormat.enclose(paramId))
    .append(",'FB'").append(",'',").append(
      TextFormat.enclose(value)).append(",'',0,'')");
  jt.execute(s.toString());
 }

 

4:spring如何配置

 

<bean id="gateway.tally" class="com.SettleTallyGateway">
                <property name="dataSource"><ref local="dataSource.ECM"/></property>
                <property name="dischargePolicy"><ref local="dischargePolicy"/></property>
  </bean>

 

你可能感兴趣的:(DAO,spring,sql,bean)