Как записать один запрос, вставить данные в таблицу и обновить другой, используя шаблон Spring JDBC - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть две таблицы данных категории и значок. Таблица категорий имеет один столбец iconId это внешний ключ из таблицы значков. Теперь я хочу вставить данные в таблицу категорий и обновить столбец флага таблицы значков, как это сделать в sping jdbc template

private final String addCategorySql  ="INSERT INTO CATEGORY(TYPE,ICONID)"
        +" VALUES(?,?)  UPDATE ICON SET FLAG=? WHERE ICONID=? ";
public boolean addNewCategory(Category  category){
    Object [] parameters = {category.getType(),category.getIconId(),1,category.getIconId()};
    try {
        int rows = jdbcTemplate.update(addCategorySql, parameters);

        if (rows == 1) {
            return true;
        } else {
            return false;
        }
    } catch (Exception e) {
        logger.error("Exception  :  " , e);
        throw e;
    }

1 Ответ

0 голосов
/ 27 апреля 2018

Почему бы не разделить sql на 2 оценки? Это будет более понятно, и вы сможете понять, была ли категория вставлена ​​или нет, а значок обновлен или нет.

private final String addCategorySql = "INSERT INTO CATEGORY(TYPE,ICONID)"
        + " VALUES(?,?);"
private final String updateIconSql = "UPDATE ICON SET FLAG=1 WHERE ICONID=? ";

public boolean addNewCategory(Category category) {
    try {
        int updatedRows = 0;
        int insertedRows = jdbcTemplate.update(addCategorySql, category.getType(), category.getIconId());
        if (insertedRows == 1) { //we are updating Icon table only when any category inserted. Otherwise we return false;
            updatedRows = jdbcTemplate.update(updateIconSql, category.getIconId());
            if (updatedRows == 1) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } catch (Exception e) {
        logger.error("Exception  :  ", e);
        throw e;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...