Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 JDBC, JAVA, Интерфейсы  [new]
colacoca
Member

Откуда:
Сообщений: 8
Не понимаю как работает данный интерфейс. По тесту нужно, чтобы в методе employeeRowMapper был метод mapRow. Не понимаю как его прописать там

import com.epam.rd.autocode.domain.Employee;

public class RowMapperFactory {
    public RowMapper<Employee> employeeRowMapper() {

        throw new UnsupportedOperationException();
    }
}


Интерфейс

import java.sql.ResultSet;

public interface RowMapper<T> {
    T mapRow(ResultSet resultSet);

}


тест:
public class RowMapperTest {

    private static ConnectionSource connectionSource;

    @BeforeClass
    public static void initConnectionSource() {
        connectionSource = ConnectionSource.instance();
    }

    @Test
    public void employeeMapRowSingleTest() throws Exception {
        final RowMapper<Employee> employeeRowMapper = new RowMapperFactory().employeeRowMapper();

        try (final Connection conn = connectionSource.createConnection();
             final Statement statement = conn.createStatement();
             final ResultSet rs = statement.executeQuery("select * from EMPLOYEE where id = '7499'")) {

            rs.next();
            final Employee employee = employeeRowMapper.mapRow(rs);

            assertEquals(
                    new Employee(
                            new BigInteger("7499"),
                            new FullName("JOHN", "ALLEN", "MARIA"),
                            Position.SALESMAN,
                            LocalDate.of(1981, 2, 20),
                            new BigDecimal("1600")
                    ),
                    employee
            );
        }
    }
30 окт 20, 16:48    [22223687]     Ответить | Цитировать Сообщить модератору
 Re: JDBC, JAVA, Интерфейсы  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
colacoca,

Прошу прощения.
Зачем вам БД и подключение для тестирования RowMapper?!

Это же простой интерфейс, который преобразует строку ResultSet а объект.

Т.е. соединятся с БД не нужно.

Просто напишите в тесте, что если на входе такой RowSet, то на выходе должен быть такой объект.
2 ноя 20, 06:46    [22224587]     Ответить | Цитировать Сообщить модератору
 Re: JDBC, JAVA, Интерфейсы  [new]
maxkar
Member

Откуда:
Сообщений: 166
colacoca,

Можно написать класс и создать его экземпляр в методе. Можно - экземпляр анонимного класса:

public class RowMapperFactory {
    public RowMapper<Employee> employeeRowMapper() {
        return new RowMapper<Employee>() {
            @Override
            public Employee mapRow(ResultSet resultSet) {
                 return new Employee(
                            new BigInteger("7499"),
                            new FullName("JOHN", "ALLEN", "MARIA"),
                            Position.SALESMAN,
                            LocalDate.of(1981, 2, 20),
                            new BigDecimal("1600")
                    );
            }
        };
    }
}
2 ноя 20, 21:10    [22225295]     Ответить | Цитировать Сообщить модератору
 Re: JDBC, JAVA, Интерфейсы  [new]
colacoca
Member

Откуда:
Сообщений: 8
maxkar, Спасибо!
4 ноя 20, 23:51    [22226511]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить