Xpages 限制来自getAllEntries的NotesViewEntryCollection的最佳实践
我想创建更好的web服务,通过分页显示NotesView中的集合 我发现了View.getAllEntries的一些性能问题 在MongoDB上,我可以将findAll()与skip()和limit()一起使用 如何在Domino上做到这一点?使用。如果要在大视图中分页,则它比查看.getAllEntries()要快得多。 您可以使用Xpages 限制来自getAllEntries的NotesViewEntryCollection的最佳实践,xpages,lotus-notes,lotus-domino,Xpages,Lotus Notes,Lotus Domino,我想创建更好的web服务,通过分页显示NotesView中的集合 我发现了View.getAllEntries的一些性能问题 在MongoDB上,我可以将findAll()与skip()和limit()一起使用 如何在Domino上做到这一点?使用。如果要在大视图中分页,则它比查看.getAllEntries()要快得多。 您可以使用view.createViewNav()或类似方法获取ViewNavigator的实例。为了获得最佳性能,请在获取导航器之前调用view.setAutoUpdate
view.createViewNav()
或类似方法获取ViewNavigator
的实例。为了获得最佳性能,请在获取导航器之前调用view.setAutoUpdate(false)
你可以通过搜索网页找到更多的信息。看起来是个不错的起点。使用。如果要在大视图中分页,则它比查看.getAllEntries()要快得多。
您可以使用view.createViewNav()
或类似方法获取ViewNavigator
的实例。为了获得最佳性能,请在获取导航器之前调用view.setAutoUpdate(false)
你可以通过搜索网页找到更多的信息。看起来是一个很好的起点。下面的函数从视图中获取所有Allentry,输出结果为JSON对象。请尝试以下方法,并让我知道它是否有效
private String consultView(View view, int counter,int position) throws Exception{
String strValue = "";
ViewNavigator nav;
int count = 0;
view.setAutoUpdate(false);
nav = view.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
nav.setBufferMaxEntries(400);
int limit = counter;
int skippedEntries = nav.skip(position);
String number = "";
int inde = 111;
if (skippedEntries == position) {
Map<Integer, String> columnNameMap = new HashMap<Integer, String>();
for (ViewColumn col : (List<ViewColumn>) view.getColumns()) {
if (col.getColumnValuesIndex() < 65535 && Utilisties.containsVar(viewObject.getRetCols(), col.getItemName())) {
columnNameMap.put(col.getColumnValuesIndex(), col.getItemName());
}
}
List nodeData = new ArrayList();
ViewEntry entry = nav.getCurrent();
while (entry != null && count <= (limit - 1)) {
if (!entry.isCategory()) {
try {
HashMap<String, Object> entryMap = new HashMap<String, Object>();
count++;
List<Object> columnValues = entry.getColumnValues();
entryMap.put("unid", entry.getUniversalID());
entryMap.put("position", entry.getPosition('.'));
entryMap.put("pos", entry.getPosition('.'));
entryMap.put("userpos", count);
for (Integer index : columnNameMap.keySet())
entryMap.put(columnNameMap.get(index).toString(),columnValues.get(index));
nodeData.add(entryMap);
} catch (Exception e) {
e.printStackTrace();
}
}
ViewEntry tmpentry = nav.getNext(entry);
entry.recycle();
entry = tmpentry;
}
JsonJavaObject returnJSON = new JsonJavaObject();
returnJSON.put("errorcode", 0);
returnJSON.put("errormessage", "");
if(viewObject.getGetCount())
returnJSON.put("total",getViewCount(view));
returnJSON.put("data", nodeData);
strValue = returnJSON.toString();
}
nav.recycle();
view.recycle();
return strValue;
private String consultView(视图视图、int计数器、int位置)引发异常{
字符串strValue=“”;
视图导航器导航;
整数计数=0;
view.setAutoUpdate(false);
nav=view.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
资产净值(400);
int limit=计数器;
int skipedentries=nav.skip(位置);
字符串编号=”;
int inde=111;
if(skippedEntries==位置){
Map columnNameMap=新建HashMap();
for(ViewColumn col:(List)view.getColumns(){
if(col.getColumnValuesIndex()<65535&&Utilities.containsVar(viewObject.getRetCols(),col.getItemName()){
columnNameMap.put(col.getColumnValuesIndex(),col.getItemName());
}
}
List nodeData=new ArrayList();
ViewEntry=nav.getCurrent();
while(entry!=null&&count下面的函数从视图中获取所有Allentry,输出结果为JSON对象。请尝试以下操作,并告诉我它是否有效
private String consultView(View view, int counter,int position) throws Exception{
String strValue = "";
ViewNavigator nav;
int count = 0;
view.setAutoUpdate(false);
nav = view.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
nav.setBufferMaxEntries(400);
int limit = counter;
int skippedEntries = nav.skip(position);
String number = "";
int inde = 111;
if (skippedEntries == position) {
Map<Integer, String> columnNameMap = new HashMap<Integer, String>();
for (ViewColumn col : (List<ViewColumn>) view.getColumns()) {
if (col.getColumnValuesIndex() < 65535 && Utilisties.containsVar(viewObject.getRetCols(), col.getItemName())) {
columnNameMap.put(col.getColumnValuesIndex(), col.getItemName());
}
}
List nodeData = new ArrayList();
ViewEntry entry = nav.getCurrent();
while (entry != null && count <= (limit - 1)) {
if (!entry.isCategory()) {
try {
HashMap<String, Object> entryMap = new HashMap<String, Object>();
count++;
List<Object> columnValues = entry.getColumnValues();
entryMap.put("unid", entry.getUniversalID());
entryMap.put("position", entry.getPosition('.'));
entryMap.put("pos", entry.getPosition('.'));
entryMap.put("userpos", count);
for (Integer index : columnNameMap.keySet())
entryMap.put(columnNameMap.get(index).toString(),columnValues.get(index));
nodeData.add(entryMap);
} catch (Exception e) {
e.printStackTrace();
}
}
ViewEntry tmpentry = nav.getNext(entry);
entry.recycle();
entry = tmpentry;
}
JsonJavaObject returnJSON = new JsonJavaObject();
returnJSON.put("errorcode", 0);
returnJSON.put("errormessage", "");
if(viewObject.getGetCount())
returnJSON.put("total",getViewCount(view));
returnJSON.put("data", nodeData);
strValue = returnJSON.toString();
}
nav.recycle();
view.recycle();
return strValue;
private String consultView(视图视图、int计数器、int位置)引发异常{
字符串strValue=“”;
视图导航器导航;
整数计数=0;
view.setAutoUpdate(false);
nav=view.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
资产净值(400);
int limit=计数器;
int skipedentries=nav.skip(位置);
字符串编号=”;
int inde=111;
if(skippedEntries==位置){
Map columnNameMap=新建HashMap();
for(ViewColumn col:(List)view.getColumns(){
if(col.getColumnValuesIndex()<65535&&Utilities.containsVar(viewObject.getRetCols(),col.getItemName()){
columnNameMap.put(col.getColumnValuesIndex(),col.getItemName());
}
}
List nodeData=new ArrayList();
ViewEntry=nav.getCurrent();
while(entry!=null&&countimport java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入com.ibm.commons.util.io.json.JsonJavaObject;
导入lotus.domino.NotesException;
导入lotus.domino.View;
导入lotus.domino.ViewColumn;
导入lotus.domino.ViewEntryCollection;
导入lotus.domino.ViewNavigator;
导入lotus.domino.ViewEntry;
私有字符串consultView(视图视图、int计数器、int位置)引发异常{
字符串strValue=“”;
视图导航器导航;
整数计数=0;
view.setAutoUpdate(false);
nav=view.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
资产净值(400);
int limit=计数器;
int skipedentries=nav.skip(位置);
字符串编号=”;
if(skippedEntries==位置){
Map columnNameMap=新建HashMap();
for(ViewColumn col:(List)view.getColumns(){
if(列getColumnValuesIndex()<65535){
columnNameMap.put(col.getColumnValuesIndex(),col.getItemName());
}
}
List nodeData=new ArrayList();
ViewEntry=nav.getCurrent();
while(entry!=null&&countimport java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入com.ibm.commons.util.io.json.JsonJavaObject;
导入lotus.domino.NotesException;
导入lotus.domino.View;
导入lotus.domino.ViewColumn;
导入lotus.domino.ViewEntryCollection;
导入lotus.domino.ViewNavigator;
导入lotus.domino.ViewEntry;
私有字符串consultView(视图视图、int计数器、int位置)引发异常{
字符串strValue=“”;
视图导航器导航;
整数计数=0;
view.setAutoUpdate(false);
nav=view.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
资产净值(400);
int limit=计数器;
int skipedentries=nav.skip(位置);
字符串编号=”;
if(skippedEntries==位置){
Map columnNameMap=新建HashMap();
for(ViewColumn col:(List)view.getColumns(){
if(列getColumnValuesIndex()<65535){
columnNameMap.put(col.getColumnValuesIndex(),col.getItemName());
}
}
List nodeData=new ArrayList();
ViewEntry=nav.getCurrent();
while(进入)