Spring updateRow

kroschel

Mitglied
hi...
hat jemand schon mal mit der updateRow Methode herumgespielt?

Java:
String query  = "select * from navigation where navigationID=? OR parentID=?";
        UpdatableSqlQuery  u = new UpdatableSqlQuery (ds, query) {
           

            protected Object updateRow(ResultSet resultSet, int i, Map map) throws SQLException {
                NavigationBean o = new NavigationBean();
              
                return o;
            }
          
        };
        
        u.declareParameter(new SqlParameter("navigationID", Types.VARCHAR));
        u.declareParameter(new SqlParameter("parentID", Types.VARCHAR));

wie ersetze ich die Fragezeichen und was gehört in die updateRow() ?

Gruß
 
Hallo,

was willst du denn genau machen?
Für die Arbeit mit JDBC verwende ich eigentlich immer die Klasse JDBCDaoSupport bzw. das JDBCTemplate von Spring.
Beispiel:
Java:
/**
 * 
 */
package de.tutorials;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

/**
 * @author Tom
 */
public class SpringJdbcExample {

  /**
   * @param args
   */
  public static void main(String[] args) {
    MysqlDataSource dataSource = new MysqlDataSource();
    dataSource.setServerName("localhost");
    dataSource.setPort(3306);
    dataSource.setDatabaseName("test");
    dataSource.setUser("root");
    dataSource.setPassword("tutorials");

    RowMapper rowToPersonMapper = new RowMapper() {
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        return new Person(rs.getLong("id"), rs.getString("name"), rs.getDate("dateOfBirth"));
      }
    };

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    List<?> persons = jdbcTemplate.query("SELECT id,name,dateOfBirth FROM person where id = ?",
      new Object[] { 1 }, rowToPersonMapper);

    System.out.println(persons);
    
    persons = jdbcTemplate.query("SELECT id,name,dateOfBirth FROM person where dateOfBirth < ?",
      new Object[] { new Date() }, rowToPersonMapper);

    System.out.println(persons);
  }

  static class Person {
    Long id;
    String name;
    Date dateOfBirth;


    /**
     * @param id
     * @param name
     * @param dateOfBirth
     */
    public Person(Long id, String name, Date dateOfBirth) {
      super();
      this.id = id;
      this.name = name;
      this.dateOfBirth = dateOfBirth;
    }


    /**
     * @return the id
     */
    public Long getId() {
      return id;
    }


    /**
     * @param id the id to set
     */
    public void setId(Long id) {
      this.id = id;
    }


    /**
     * @return the name
     */
    public String getName() {
      return name;
    }


    /**
     * @param name the name to set
     */
    public void setName(String name) {
      this.name = name;
    }


    /**
     * @return the dateOfBirth
     */
    public Date getDateOfBirth() {
      return dateOfBirth;
    }


    /**
     * @param dateOfBirth the dateOfBirth to set
     */
    public void setDateOfBirth(Date dateOfBirth) {
      this.dateOfBirth = dateOfBirth;
    }


    @Override
    public String toString() {
      return this.id + " " + this.name + " " + this.dateOfBirth;
    }
  }
}

SQL:
mysql> select * from person;
+------+--------+-------------+
| id   | name   | dateOfBirth |
+------+--------+-------------+
|    1 | Thomas | 1983-07-29  |
|    2 | Stefan | 1990-06-23  |
+------+--------+-------------+
2 rows in set (0.00 sec)

Ausgabe:
Code:
[1 Thomas 1983-07-29]
[1 Thomas 1983-07-29, 2 Stefan 1990-06-23]

Hier noch ein Beispiel zum JDBCDaoSupport:
http://www.tutorials.de/forum/java/236622-webservices-mit-spring-und-axis.html

Es gibt auch noch ein NamedParameterJdbcTemplate das zusätzlich zu den Positionalen Parametern (?) auch noch benannte Parameter unterstützt. Für den einfachen Umgang mit dem JDBCTemplate gibts dann auch noch das SimpleJDBCTemplate...

Gruß Tom
 
hi...
wollt mich vor packageinjection schützen.
hatte die update-methode benutzt
Java:
 String insert = "insert into navigation (navigationID, parentID) values (?, ?)";
 SqlUpdate su = new SqlUpdate(ds, insert);
su.declareParameter
...
was gut geklappt hatte und nun wollt ich das gleiche Prinzip auf Select anwenden.

Werd mir Dein gleich mal durchlesen. Schon mal Danke
 
Zurück