Spring JDBC RowMapper с иерархиями классов

Большая разница - то, что try...catch будет глотать исключение, скрывая то, что ошибка произошла. try..finally выполнит Ваш код очистки, и затем исключение будет продолжать идти, обрабатываться чем-то, что знает, что сделать с ним.

6
задан Cœur 24 November 2019 в 06:38
поделиться

1 ответ

Не похоже, что есть место в подклассе где вы можете добавить ловушку для переключения класса без полного копирования реализации mapRow () для BeanPropertyRowMapper. Лучшим подходом может быть создание класса RowMapper, который делегирует соответствующий BeanPropertyRowMapper.

Например:

    final RowMapper managerMapper = new BeanPropertyRowMapper(Manager.class);
    final RowMapper employeeMapper = new BeanPropertyRowMapper(Employee.class);
    final RowMapper contractorMapper = new BeanPropertyRowMapper(Contractor.class);

    RowMapper rm = new RowMapper()
    {
        @Override
        public Object mapRow(ResultSet rs, int rowNum)
            throws SQLException
        {
            int employeeType = rs.getInt("type");
            switch (employeeType)
            {
                case 1:
                    return managerMapper.mapRow(rs, rowNum); 

                case 2:
                    return employeeMapper.mapRow(rs, rowNum);

                case 3:
                    return contractorMapper.mapRow(rs, rowNum);

                default:
                    break;

            }
        }
    };
4
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

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