Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC, JAVA, Интерфейсы / 4 сообщений из 4, страница 1 из 1
30.10.2020, 16:48
    #40013530
colacoca
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC, JAVA, Интерфейсы
Не понимаю как работает данный интерфейс. По тесту нужно, чтобы в методе employeeRowMapper был метод mapRow. Не понимаю как его прописать там

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
import com.epam.rd.autocode.domain.Employee;

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

        throw new UnsupportedOperationException();
    }
}



Интерфейс

Код: java
1.
2.
3.
4.
5.
6.
import java.sql.ResultSet;

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

}



тест:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
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
            );
        }
    }
...
Рейтинг: 0 / 0
02.11.2020, 06:46
    #40014101
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC, JAVA, Интерфейсы
colacoca,

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

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

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

Просто напишите в тесте, что если на входе такой RowSet, то на выходе должен быть такой объект.
...
Рейтинг: 0 / 0
02.11.2020, 21:10
    #40014583
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC, JAVA, Интерфейсы
colacoca,

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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")
                    );
            }
        };
    }
}
...
Рейтинг: 0 / 0
04.11.2020, 23:51
    #40015368
colacoca
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC, JAVA, Интерфейсы
maxkar, Спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC, JAVA, Интерфейсы / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]