Ordinamento lista @GET request http con valori di colonna multipli

di il
2 risposte

Ordinamento lista @GET request http con valori di colonna multipli








	@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

2 Risposte

  • Re: Ordinamento lista @GET request http con valori di colonna multipli

    02/11/2023 - Bovy98 ha scritto:


    Ho problemi con la richiesta http per poter ordinare con due ordinamenti la mia lista […]

    Quali problemi? Hai un errore? Un comportamento diverso da quello atteso?

    Dovresti aggiungere dei dettagli, perché non abbiamo la possibilità di prendere il codice così com'è e testarlo, né possiamo riprodurre agevolmente e in poco tempo la tua situazione in termini di dati, architettura e codice.

  • Re: Ordinamento lista @GET request http con valori di colonna multipli

    02/11/2023 - Alka ha scritto:


    02/11/2023 - Bovy98 ha scritto:


    Ho problemi con la richiesta http per poter ordinare con due ordinamenti la mia lista […]

    Quali problemi? Hai un errore? Un comportamento diverso da quello atteso?

    Dovresti aggiungere dei dettagli, perché non abbiamo la possibilità di prendere il codice così com'è e testarlo, né possiamo riprodurre agevolmente e in poco tempo la tua situazione in termini di dati, architettura e codice.

    Scusatemi avete ragione, mi dava un errore sul network dell' inspector che ho risolto inserendo @DefaultValue("modello") nel parametro orderBy. Grazie mille per la risposta. ora apparentemente dovrebbe fare il suo lavoro.. sistematicamenteriesco a risolvere dopo aver postato l problema sul forum :')

Devi accedere o registrarti per scrivere nel forum
2 risposte