2012-10-04 148 views
0

我想插入一個記錄到我使用Spring 3.0的數據庫中。我沒有使用Hibernate或任何持久性框架。想知道,如果DAO是正確寫入或什麼不同的方式就可以這樣寫:Spring MVC - 插入語句是否正確寫入?

OfficersDAO

public void saveOfficer(Officers officer) { 
     logger.info("In saveOfficer"); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 

     try{ 

      logger.info("Values are "+officer.getUserName()+" "+officer.getPassword()+" "+officer.getfName()+" "+officer.getoName()+" "+officer.getDivisionNo()+" "+officer.getPositionId()+" "+officer.getEmailAdd()+" "+dateFormat.format(officer.getStartDate())+" "+dateFormat.format(officer.getEndDate())+" "+ officer.getGenderId()+" "+officer.getPhoneNo()+" "+dateFormat.format(officer.getDob())); 


      String sql= "INSERT INTO crimetrack.tblofficers (userName,password, fName, lName, oName, " + 
         "divisionNo, poisitionId, emailAdd, startDate, endDate, genderId, " + 
         "phoneNo, dob) VALUES (:userName,:password, :fName, :lName, :oName, :divisionNo, "+ 
         ":poisitionId, :emailAdd, :startDate, :endDate, :genderId, " + 
         ":phoneNo, :dob)"; 



      logger.debug("Executing saveOfficer String " + sql); 
      int count = getJdbcTemplate().update(sql,new MapSqlParameterSource() 
        .addValue("userName",officer.getUserName()) 
        .addValue("password", officer.getPassword()) 
        .addValue("fName", officer.getfName()) 
        .addValue("lName", officer.getlName()) 
        .addValue("oName", officer.getoName()) 
        .addValue("divisionNo", officer.getDivisionNo()) 
        .addValue("positionId",officer.getPositionId()) 
        .addValue("emailAdd", officer.getEmailAdd()) 
        .addValue("startDate", dateFormat.format(officer.getStartDate())) 
        .addValue("endDate", dateFormat.format(officer.getEndDate())) 
        .addValue("genderId", officer.getGenderId()) 
        .addValue("phoneNo",officer.getPhoneNo()) 
        .addValue("dob", dateFormat.format(officer.getDob()))); 

      System.out.println(sql); 
      logger.info(count +" Rows affected in tblOfficers"); 



     }catch(Exception e){ 

      logger.error("Could not save officer ", e); 
     } 


    } 


public static class OfficerMapper implements ParameterizedRowMapper<Officers>{ 

     public Officers mapRow(ResultSet rs, int rowNum) throws SQLException { 

       Officers officer = new Officers(); 
       officer.setUserName(rs.getString("userName")); 
       officer.setDivisionNo(rs.getInt("divisionNo")); 
       officer.setDob(rs.getDate("dob")); 
       officer.setEmailAdd(rs.getString("emailAdd")); 
       officer.setEndDate(rs.getDate("endDate")); 
       officer.setfName(rs.getString("fName")); 
       officer.setGenderId(rs.getString("genderId")); 
       officer.setlName(rs.getString("lName")); 
       officer.setoName(rs.getString("oName")); 
       officer.setPassword(rs.getString("password")); 
       officer.setPhoneNo(rs.getString("phoneNo")); 
       officer.setPositionId(rs.getInt("positionId")); 
       officer.setStartDate(rs.getDate("startDate")); 
       return officer; 
      }  
    } 
+2

你的'sql'字符串有錯字 - 檢查你拼寫'positionId'的方式。像這樣的複製/粘貼和重複錯誤是DAO通常不會再這樣寫的原因之一。 – millhouse

+0

拼寫得到修復,但同樣的問題仍然存在 – devdar

+0

行,所以插入不工作*在所有*?它是否會拋出異常,或者只是看到「0行受到影響」? – millhouse

回答

0

我重新寫的代碼,這爲我工作:

public void saveOfficer(Officers officer) { 
     logger.info("In saveOfficer"); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 


     try{ 

      logger.info("Values are "+officer.getUserName()+" "+StringSecurity.EncryptString(officer.getPassword())+" "+officer.getfName()+" "+officer.getoName()+" "+officer.getDivisionNo()+" "+officer.getPositionId()+" "+officer.getEmailAdd()+" "+dateFormat.format(officer.getStartDate())+" "+dateFormat.format(officer.getEndDate())+" "+ officer.getGenderId()+" "+officer.getPhoneNo()+" "+dateFormat.format(officer.getDob())); 

      int count = getJdbcTemplate().update("INSERT INTO crimetrack.tblofficers (userName,password, fName, lName, oName, divisionNo, positionId, emailAdd, startDate, endDate, genderId,phoneNo, dob,badgeNo) "+ 
               "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)" 
               , new Object[]{officer.getUserName(),StringSecurity.EncryptString(officer.getPassword()),officer.getfName(), 
               officer.getlName(),officer.getoName(),officer.getDivisionNo(),officer.getPositionId(), 
               officer.getEmailAdd(),officer.getStartDate(),officer.getEndDate(),officer.getGenderId(), 
               officer.getPhoneNo(),officer.getDob(),officer.getBadgeNo()}); 

     logger.info(count +" Rows affected in tblOfficers"); 



     }catch(Exception e){ 

      logger.error("Could not save officer ", e); 
     }  
    }