Spring MVC Preparedstatementcreator: доступ к объекту локальной переменной осуществляется из внутреннего класса - PullRequest
0 голосов
/ 08 января 2019


Я пытаюсь сохранить запись Customer здесь, используя preparedstatementcreator.

public Customer saveRecord(Customer customer) {
        int result = 0;

        try {
            KeyHolder keyHolder = new GeneratedKeyHolder();
            result = jdbcTemplate.update(new PreparedStatementCreator() {
                @Override
                public PreparedStatement createPreparedStatement(Connection connection)
                        throws SQLException {
                    PreparedStatement preparedStatement = connection.prepareStatement(SQL_INSERT_CUSTOMER_MASTER_WITH_AUTO_INCREMENT, Statement.RETURN_GENERATED_KEYS);
                    preparedStatement.setString(1, customer.getFirstname());
                    return preparedStatement;
                }
            }, keyHolder);
        } catch (DataAccessException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result > 0 ? customer : null;
    }

А вот мой объект Customer.

public class Customer implements Serializable{

    private long id;
    private String firstname;
    private String secondname;
    private int age;
    private String address;
    private Country country;
    private String[] language;

    public Customer() {
    }

    public Customer(String firstname, String secondname, int age, String address, Country country, String[] language) {
        this.firstname = firstname;
        this.secondname = secondname;
        this.age = age;
        this.address = address;
        this.country = country;
        this.language = language;
    }

    //getters setters
}

Я понимаю, что причина в том, что мы не можем получить доступ к объекту клиента из createPreparedStatement ().


Так какую модификацию я могу сделать для исходного класса объекта Customer, чтобы сделать его видимым внутри этого внутреннего класса?

...