获取下一个按钮上的所有记录也

时间:2017-04-18 04:44:39

标签: java ibatis displaytag

我正在开发一个应用程序,用于显示我正在使用 displaytag 库并查询数据库中的数据,我正在使用 Ibatis < / strong>即可。 我的数据库中有大约10k个记录。在 UI 上我有链接转到下一页和上一页,但问题是当我转到下一页或上一页时,每次点击分页链接(例如页面) 1,2,3 ......,下一步),我的应用程序正在加载每个10k条记录。表示每次点击都会获取所有10k条记录。

我有什么遗漏或有其他方法可以尝试吗?

这是我的Jsp

    <sfdisplay:table name="userList"  
                                      pagesize="10"
                                      requestURI="/viewUserList.do"
                                      uid="listOfValues"
                                      sort="list"
                                      decorator="com.xxx.xxx.xxx.xxx.xxx.xxx" excludedParams="password confirmPassword " >
                            <sfdisplay:setProperty name="basic.empty.showtable" value="true" />              

                            <sfdisplay:column property="userName" titleKey="userlist.column.label.username" sortable="true" />
                            <sfdisplay:column property="firstName" titleKey="userlist.column.label.firstname" sortable="true" />
                            <sfdisplay:column property="lastName" titleKey="userlist.column.label.lastname" sortable="true" />
                            <sfdisplay:column property="orgs" titleKey="userlist.column.label.orgs" sortable="false" />
                            <sfdisplay:column property="modules" titleKey="userlist.column.label.modules" sortable="false" />
                            <sfdisplay:column property="roles" titleKey="userlist.column.label.roles" sortable="false" />
                            <sfdisplay:column property="action" titleKey="userlist.column.label.action" sortable="false" />

 </sfdisplay:table>

修改 我想知道是否有任何东西可以通过使用displaytag的JSP方面完成?

更新: 这是查询:

<select id="selectUsers" resultClass="user"> SELECT u.user_id as userId, u.name as userName, u.first_name as firstName, u.last_name as lastName, u.LOCKED_AT_DATE as lockedAt FROM users u WHERE u.deleted IS NULL </select>

以下是部分列表实施

的更新jsp
<sfdisplay:table name="userList"  
                                  pagesize="10"
                                  requestURI="/viewUserList.do"
                                  uid="listOfValues1"
                                  partialList="true"
                                  size="resultSize"
                                  sort="external"
                                  defaultsort="1"

1 个答案:

答案 0 :(得分:0)

Displaytag“剪切”10k元素中的10个元素。必须为每个请求做到这一点。这就是它如此缓慢的原因。如果您的ibatis查询类似于select * from usersLIMIT将只包含所有10k用户。

建议#1 :在Ibatis中实现某种具有偏移功能的分页。几乎每个数据库都有这个(例如mysql使用{{1}})。使用该功能,您应该只能从数据库中的10k表中访问某些元素,而不是所有元素。

推荐#2 :对于“自定义”分页(和排序),您必须使用displaytag的partialList功能。因此,您必须实现分页功能并告诉displaytag您的查询在哪个页面上选择服务器端的数据。 (Example

这些建议需要一些时间来实现,但是如果你坚持使用这种工具并且用户表会在下一次增长,那么这是我看到的唯一选择。