Добавить человека в базу данных с полем ArrayList. Servlet

Попытка создать приложение CRUD, используя jdbc и mysql. У меня есть Person.class и две таблицы в базе данных:

class Person {
String name;
String surname;
List<String> phones;
}

Tables:    
`phone`
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `owner` INT UNSIGNED NOT NULL,
    `number` VARCHAR(50) NOT NULL,
    CONSTRAINT `PK_phone` PRIMARY KEY (`id`)
)
  `person`
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `surname` VARCHAR(150) NOT NULL,
    `name` VARCHAR(150) NOT NULL,
     CONSTRAINT `PK_phonebook` PRIMARY KEY (`id`)
)
ALTER TABLE `phone` 
 ADD CONSTRAINT `FK_phone_person`
    FOREIGN KEY (`owner`) REFERENCES `person` (`id`) ON DELETE Cascade ON UPDATE Cascade
;
SET FOREIGN_KEY_CHECKS=1 ;

Как я могу добавить человека с полем Список телефонов в базу данных с помощью сервлетов??? Например:
Гарри Смит +37521987902
+56727172713
+45679012214

1 ответ

Идея проста, вы можете использовать этот способ

  1. Введите вашу личность
  2. получить идентификатор этого человека
  3. вставить список телефона

Вы можете использовать это так:

try {
    Class.forName(driver);
    Connection connection = DriverManager.getConnection(DB_URL, DB_username, DB_password);

    String query = "INSERT INTO person (surname, name) values(?, ?)";
    PreparedStatement preparedStatement = connection.prepareStatement(query);
    preparedStatement.setString(1, "hello");
    preparedStatement.setString(2, "jdbc");

    int affectedRows = preparedStatement.executeUpdate();
    long id = 0;
    if (affectedRows > 0) {
        ResultSet generatedKeys = preparedStatement.getGeneratedKeys();
        if (generatedKeys.next()) {
            id = generatedKeys.getLong(1);
        } else {
            throw new SQLException("Creating user failed, no ID obtained.");
        }
    }

    connection.setAutoCommit(false);
    PreparedStatement ps = connection.prepareStatement("INSERT INTO phone (owner, number) values(?, ?)");
    for (String phone : listePhone) {
        preparedStatement.setLong(1, id);
        preparedStatement.setString(2, phone);
        ps.addBatch();
    }
    ps.executeBatch();
    connection.commit();

} 

Вы можете научиться выполнять несколько операторов за один раз, используя пакетную обработку операторов

Другие вопросы по тегам