У меня есть Enum, который возвращает пол от пола char:
public enum Gender {
FEMALE('F'), MALE('M');
private char gender;
Gender(char gender) {
this.gender = gender;
}
public static Gender getSex(char gender) {
return Arrays.stream(Gender.values())
.filter(s -> s.gender == gender)
.findFirst()
.orElseThrow(NoSuchElementException::new);
}
}
В работе у меня есть читатель с поставщиком запросов, который выбирает из БД пол столбца (со значениями F или M).
ItemReader<UserDTO> userDatabaseReader() {
JdbcPagingItemReader<UserDTO> reader = new JdbcPagingItemReader<>();
reader.setDataSource(dataSource);
reader.setPageSize(100);
reader.setRowMapper(new BeanPropertyRowMapper<>(UserDTO.class));
MySqlPagingQueryProvider queryProvider = new MySqlPagingQueryProvider();
queryProvider.setSelectClause("SELECT u.id, " +
"u.firstname as firstName, " +
"u.sex as gender, " +
"u.eliminated ^ 1 as active");
queryProvider.setFromClause("FROM users u");
HashMap<String, Order> sortKeys = new HashMap<>();
sortKeys.put("u.id", Order.DESCENDING);
queryProvider.setSortKeys(sortKeys);
reader.setQueryProvider(queryProvider);
return reader;
}
У меня есть UserDTO с полем Enum.Как получить пол Enum из столбца char, вызывающего метод getSex()
, и передать его в UserDTO как enum?