ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <erlend.bjo...@aftenposten.no>
Subject SV: pager in ibatis
Date Wed, 26 Apr 2006 07:21:34 GMT
Hi there!

<Yusuf wrote>
I think it's better off making the paging logic yourself in the
application, and then querying only the records you want to show, for
example in oracle you can use the rownum to fetch the data like

select * from 
(select rownum row, a.* from tabel1 as a)
where row between 21 and 30
</Yusuf wrote>

Why not use the ibatis the queryForList with "pageNumber and pageSize" parameters like this:

sqlMap.queryForList("searchCompanies", searchText, ((pageNumber-1) * pageSize), pageSize);

??

Then you only keep track of the pageNumber you are at and don't need to make your query database
specific... and you don't worry about the caching, it cache the page you are at and only that
as far as I have understood it.

You also need the countSearchCompanies, with an exactly the same query but with count in it
..... to find out how many pages it totally for that search. So you can specifiy page 1, 2,
3, 4 in e.g. your webpage.

We use this strategy with success here:

	http://www.aguiden.no   (search for sykkel (bike),gives you two pages)

Since queryForPaginatedList don't have a count (??), I don't think it load the totally result
set, only the page you are at, and have lazy loading of the next page... smooth.

So far as I have understood it.... ???


Take care,
Erlend

-------------------------------------------


-----Opprinnelig melding-----
Fra: Yusuf [mailto:Yusuf@ekalife.co.id] 
Sendt: 13. april 2006 02:44
Til: user-java@ibatis.apache.org
Emne: RE: pager in ibatis

I think it's better off making the paging logic yourself in the
application, and then querying only the records you want to show, for
example in oracle you can use the rownum to fetch the data like

select * from 
(select rownum row, a.* from tabel1 as a)
where row between 21 and 30

because using the queryForPaginatedList (without caching) will always
fetch the entire result and then showing only the selected records, and
if the record count is high (like thousands..) then the performance will
be bad.

cmiiw,
Yusuf.

-----Original Message-----
From: John Chien [mailto:john.chien@ncmail.net]
Sent: Wednesday, April 12, 2006 11:27 PM
To: user-java@ibatis.apache.org
Subject: Re: pager in ibatis


L:arry:

Thank you for the information.
The queryForPaginatedList() will return a list, then I can check for the

existence of successive records by calling the isNextPageAvailable().
and go to that page by calling  gotoPage();

However, I can not keep this list in my server due to concurrecy reason.
Does that mean that I have to call the same method every time and  give 
it the page number for it to return me the records ?

I am doing the web development.
How can I make use of this returned list in JSP with Struct development
?

Should I keep the list in the session or request scope ?

Thanks,

John Chien

Larry Meadors wrote:

>queryForPaginatedList()
>
>Larry
>
>
>On 4/12/06, John Chien <john.chien@ncmail.net> wrote:
>  
>
>>Dear sir:
>>
>>I have a feature that requires me to return query result of a
selection
>>statment in certain amount of successive records every time.
>>This is just like a page.
>>
>>For example:
>>
>>SELECT  id, name
>>FROM employee;
>>
>>The selection result of this statement is a list.
>>However, I want to only get 30 records every time.
>>For the first call, I want to get the first 30 (1 - 30) records, for
>>thext call, I would like to get the next 30 (31 - 60) records.
>>
>>How can I do this in Ibatis ?
>>
>>Thanks,
>>
>>John Chien
>>
>>
>>
>>    
>>


Mime
View raw message