как получить автоматически увеличиваемое значение столбца при вставке записи в H2 DB [duplicate]

type действительно относится к различным структурам данных, доступным в R. Это обсуждение в R Руководство по определению языка может помочь вам начать работу с объектами и типами.

На другой стороны, class означает что-то еще в R, чем то, что вы можете ожидать. Из руководства R Language Definition (которое поставляется с вашей версией R):

2.2.4 Классы

R имеет сложную систему классов1 , в основном управляемый атрибутом класса. Этот атрибут является символьным вектором, содержащим список классов, которым наследуется объект. Это составляет основу функциональности «общих методов» в R.

К этому атрибуту можно получить доступ и манипулировать практически без ограничений пользователями. Нет проверки того, что объект фактически содержит компоненты, которые ожидают методы класса. Таким образом, изменение атрибута класса должно выполняться с осторожностью, и когда они доступны, предпочтение отдается конкретным функциям создания и принуждения.

blockquote>

11
задан birdy 14 October 2012 в 14:54
поделиться

3 ответа

Проверьте эту ссылку. Вы можете использовать jdbcTemplate.update как:

EDIT Добавлен импорт по запросу

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;

, следующий за использованием кода:

final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
    new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            PreparedStatement ps =
                connection.prepareStatement(INSERT_SQL, new String[] {"id"});
            ps.setString(1, name);
            return ps;
        }
    },
    keyHolder);
// keyHolder.getKey() now contains the generated key
15
ответ дан Anshu 23 August 2018 в 00:44
поделиться

JdbcTemplate лежит в основе Spring. Другой вариант - использовать SimpleJdbcInsert .

SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
simpleJdbcInsert
    .withTableName("TABLENAME")
    .usingGeneratedKeyColumns("ID");
SqlParameterSource params = new MapSqlParameterSource()
    .addValue("COL1", model.getCol1())
    .addValue("COL2", model.getCol2());
Number number = simpleJdbcInsert.executeAndReturnKey(params);   

Вы все еще можете @Autowire jdbcTemplate. Для меня это более удобно, чем работа с методом jdbcTemplate.update () и KeyHolder для получения фактического идентификатора.

Пример фрагмента кода проверен с помощью Apache Derby и должен работать с обычные базы данных.

Использование Spring JPA - это еще одна опция - если ORM для вас.

0
ответ дан coseos 23 August 2018 в 00:44
поделиться

Я получаю идентификатор, сгенерированный базой данных (MSSQL) после вставки, как показано ниже, import:

  import org.springframework.jdbc.core.BeanPropertyRowMapper;
  import org.springframework.jdbc.core.JdbcTemplate;
  import org.springframework.jdbc.core.RowMapper;
  import org.springframework.jdbc.core.SqlParameter;
  import org.springframework.jdbc.core.SqlReturnResultSet;
  import org.springframework.jdbc.core.simple.SimpleJdbcCall;

и фрагмент кода:

    final String INSERT_SQL = "INSERT INTO [table]\n"
            + " ([column_1]\n"
            + " ,[column_2])\n"
            + " VALUES\n" +
            " (?, ?)";

    Connection connection = jdbcTemplate.getDataSource().getConnection();
    PreparedStatement preparedStatement = connection.prepareStatement(INSERT_INVOICE_SQL, Statement.RETURN_GENERATED_KEYS);
    preparedStatement.setString(1, "test 1");
    preparedStatement.setString(2, "test 2");

    preparedStatement.executeUpdate();
    ResultSet keys = preparedStatement.getGeneratedKeys();

    if (keys.next()) {
        Integer generatedId = keys.getInt(1); //id returned after insert execution
    } 
1
ответ дан m.a.tomsik 23 August 2018 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: