@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getByExample(@QueryParam("model") String model, @QueryParam("ccFrom") Integer ccFrom, @QueryParam("ccTo") Integer ccTo,
@QueryParam("yearProdFrom") String yearProdFrom, @QueryParam("yearProdTo") String yearProdTo, @QueryParam("priceFrom") Integer priceFrom,
@QueryParam("priceTo") Integer priceTo,
@QueryParam("orderBy") String orderBy, @QueryParam("orderHow") @DefaultValue("desc") String orderHow,
@QueryParam("offset") Integer offset, @QueryParam("limit") Integer limit) {
SqlSessionFactory sessionFactory = SqlSessionFactoryManager.getSqlSessionFactory();
SqlSession session = sessionFactory.openSession();
List<Moto> listaMoto = null;
// Paginazione Server Side
if (offset == null) offset = RowBounds.NO_ROW_OFFSET;
if (limit == null) limit = RowBounds.NO_ROW_LIMIT;
RowBounds rowBounds = new RowBounds(offset, limit);
MotoExample mb = new MotoExample();
MotoExample.Criteria criteria = mb.createCriteria(); // Create a single criteria
if (model != null) {
criteria.andModelloLike("%" + model + "%"); //sistemato il like se scrivo solo un pezzetto di queryParam, Modificato metodo andModelloLike con ILIKE
}
if (ccFrom != null) {
criteria.andCcGreaterThan(ccFrom);
//greaterThan, lessThan
}
if (ccTo != null) {
criteria.andCcLessThan(ccTo);
}
if (yearProdFrom != null) {
criteria.andAnnoGreaterThanOrEqualTo(yearProdFrom);
}
if (yearProdTo != null) {
criteria.andAnnoLessThanOrEqualTo(yearProdTo);
}
if (priceFrom != null) {
criteria.andPrezzoGreaterThanOrEqualTo(priceFrom);
}
if (priceTo != null) {
criteria.andPrezzoLessThanOrEqualTo(priceTo);
}
if (orderBy.equals("modello")) {
mb.setOrderByClause("modello " + orderHow + " ,anno" + orderHow);
}
else if (orderBy.equals("anno")) {
mb.setOrderByClause("anno" + orderHow + " ,modello" + orderHow);
}
if (orderBy != null && orderHow != null) {
mb.setOrderByClause(orderBy + " " + orderHow);
}
try {
MotoMapper motoMapper = session.getMapper(MotoMapper.class);
listaMoto = motoMapper.selectByExampleWithRowbounds(mb, rowBounds);
return Response.status(Response.Status.OK).entity(listaMoto).build();
} finally {
session.close();
}
}
Ho problemi con la richiesta http per poter ordinare con due ordinamenti la mia lista, dovrei ordinare server side i risultati e poi visualizzarli su una table html appartenente al frontend angular, la mia tabella ha le colonne “modello, cc, anno, prezzo”. Io devo ordinare per modello e anche per anno contemporaneamente. Cio' che crea fastidio e' quel
if (orderBy.equals("modello")) {
mb.setOrderByClause("modello " + orderHow + " ,anno" + orderHow);
}
else if (orderBy.equals("anno")) {
mb.setOrderByClause("anno" + orderHow + " ,modello" + orderHow);
}
if (orderBy != null && orderHow != null) {
mb.setOrderByClause(orderBy + " " + orderHow);
}
Grazie a chi sapra' aiutarmi XO