Я не могу выполнить возврат значения предложения в sql, используя JdbcTemplate Spring Java, где вы можете использовать список выражений или строк для передачи в качестве аргумента.
Я пытался выполнитьприсваивание с массивом Object, как в примере ниже:
Object [] values = new Object [] {listDepartment};
следует примерам классов ниже:
Модель класса - сотрудник
public class EmployeeDTO {
private Integer employeeId;
private String firstName;
private String lastName;
private String jobId;
private Integer departamentId;
public EmployeeDTO(){}
public EtiquetaAvulsaDTO(Integer employeeId, String firstName, String lastName, String jobId,
Integer departamentId) {
super();
this.employeeId = employeeId;
this.firstName = firstName;
this.lastName = lastName;
this.jobId = jobId;
this.departmentId = departmentId;
}
public Integer getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getJobId() {
return jobId;
}
public void setJobId(String jobId) {
this.jobId = jobId;
}
public Integer getDepartmentId() {
return employeeId;
}
public void setDepartmentId(Integer departmentId) {
this.departmentId = departmentId;
}
}
класс: EmployeeService
public class EmployeeService {
@Autowired
private JdbcTemplate jdbcTemplate;
String GET_LIST_EMPLOYEES ="SELECT e.EMPLOYEE_ID AS employeeId, e.FIRST_NAME AS firstName, e.LAST_NAME AS lastName, e.JOB_ID AS jobId, e.DEPARTMENT_ID as departmentId FROM hr.employees e WHERE e.DEPARTMENT_ID IN (:listDepartment)";
/**
* TODO AINDA FALTA IMPLEMENTAÇAO PARA RETORNAR UMA LISTA E O JDBC TEMPLATE TRANSFORMAR ELE COMO CLAUSULA SQL (IN)
* @param listDepartment
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<EmployeeDTO> listEmployees( List<Integer> listDepartment){
Object[] values = new Object[] { listDepartment };
List<EmployeeDTO> result = (List<EmployeeDTO>) this.jdbcTemplate.query(GET_LIST_EMPLOYEES, values,
new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException{
EmployeeDTO employee = new EmployeeDTO();
employee.setEmployeeId(rs.getInt("employeeId"));
employee.setFirstName(rs.getString("firstName"));
employee.setLastName(rs.getString("lastName"));
employee.setJobId(rs.getString("jobId"));
employee.setDepartmentId(rs.getInt("departmentId"));
return employee;
}
}
);
return result;
}
}
classe: EmployeeRestController - поиск метода - возврат списка по конечной точке.
@GetMapping(value="/employees/lista/search", produces = "application/json")
public List<EmployeeDTO> listEmployee(@RequestParam(value = "listEmp") List<Integer> listDepartmentId
) {
return employeeService.listEmployees(listDepartmentId);
}
В выводе выполнения возвращается следующая ошибка:
java.sql.SQLException: недопустимый тип столбца