sortowanie rekordow z tabeli - Spring + Hibernate

Odpowiedz Nowy wątek
2015-01-05 10:16
0

witam,

w widoku wypisuje liste rekordow w tabeli:


<table class="data">
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Telephone</th>
        <th>PESEL</th>
        <th>Action</th>
    </tr>
    <c:forEach items="${employeeList}" var="emp">
        <tr>
            <td>${emp.lastname}, ${emp.firstname} </td>
            <td>${emp.email}</td>
            <td>${emp.telephone}</td>
            <td>${emp.pesel}</td>
            <td><a href="delete/${emp.id}">delete</a></td>
        </tr>
    </c:forEach>
    </table>

i teraz jak zrobic zeby dane byly posortowane po danych ktorejs z kolumn, przykladowo po nazwiskach alfabetycznie? gdzie to sie robi i jak? pomoze ktos jak to zrobic? chodzi mi zebym mial np. buttona i po jego kliknieciu dane sortuja sie alfabetycznie a strona sie odswieza, nie wiem wlasnie gdzie umiescic i jak zrobic to sortowanie...

a tagi to co? same się będą dodawać? następnym razem będzie kosz + ban - Shalom 2015-01-05 11:16

Pozostało 580 znaków

2015-01-05 10:29
0

Robi się to w kodzie dao. Jeżeli używasz criteria to zamiast loadAll() piszesz odpowiednie criteria z sortowaniem. Możesz oczywiście posortować z poziomu javy, ale nie uważam tego za najlepsze rozwiązanie. Potem z dao przekazujesz czy to do jakiegoś servisu, czy to już do kontrolera i serwujesz na widok. Metoda w kontrolerze odpowiedzialna za ten RequestMapping może przyjmować opcjonalny parametr odnośnie sortowania i odpowiednio się do niego stosować przy wyrzucaniu listy.

Pozostało 580 znaków

2015-01-05 11:01
0

w DAO wywoluje liste,


@Override
    public List<EmployeeEntity> getAllEmployees() {
        return this.sessionFactory.getCurrentSession().createQuery("from EmployeeEntity").list();
    }

jak mialyby tu wygladac te criteria? nowa metode musze pisac do tego?

Pozostało 580 znaków

2015-01-05 11:13
0

W swoim kodzie używasz hqla. Jeżeli za jego pomocą chcesz wyciągnąć posortowaną liste po jakiejś kolumnie to byłoby coś w stylu createQuery("from EmployeeEntity order by email").
Za pomocą criteria:


criteria = sessionFactory.getCurrentSession().createCriteria(EmployeeEntity.class)
                                                                  .addOrder(desc("email"));
return criteria.list();

Reszta to już zwykła java, czyli dostosowanie Order na podstawie kolumny itp.

Pozostało 580 znaków

2015-01-05 11:37
0

@marlukk poczytaj o Spring Data i http://docs.spring.io/spring-[...]ork/data/domain/Pageable.html
przyśpiesza to trochę robotę


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!

Pozostało 580 znaków

2015-01-05 11:39
0

dzieki, poczytam co i jak i jak cos to bede pisal

Pozostało 580 znaków

2015-01-05 11:58
0

W Spring Data miałbyś coś takiego:

//Results are sorted in ascending order
public List<Person> findByLastNameOrderByLastNameAsc(String lastName);
 
//Results are sorted in descending order
public List<Person> findByLastNameOrderByLastNameDesc(String lastName)

Pozostało 580 znaków

2015-01-05 12:07
0

Jeżeli ma to być prosta tabela bez stronicowania to rozejrzyj się za tabelą która pozwala sortować w javascripcie. Np. jqGrid.
Ma to 2 zalety:

  • Sortowanie po stronie klienta - nie obciąża serwera.
  • Możliwa zmiana sortowania na inne np. z sortowania po nazwisku na sortowanie po imieniu bez przeładowania strony.

Jeżeli dojdzie stronicowanie to trzeba dodać sortowanie po stronie serwera, ale mimo wszystko pobieranie jest wtedy przez rest tylko danych do tabeli więc zysk w szybkości też jest.

Pozostało 580 znaków

2015-01-05 14:14
0

jqGrid niestety już jest komercyjny

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0