问题:使用netbeans项目向导产生的代码默认是用entityManager.createQuery() 将数据库中的记录全部查询出来放入表格中,需要改进为只查询出最新若干条记录。
解决:去掉initComponents()中关于jTable绑定的部分,亦即将表格留空,手动做初始化。在手动初始化过程中使用
query.setFirstResult(0);
query.setMaxResult(10);
来设置查询数量,然后再与表格绑定。
源代码:
public
void
initTable(javax.swing.JTable tab, javax.swing.JScrollPane jscp)
...
{
//手动初始化表格,为paging作准备
list.clear();
query = entityManager.createQuery("select c from Cconf c order by c.cid desc");
query.setFirstResult(0);
query.setMaxResults(10);
list = org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, tab);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cday}"));
columnBinding.setColumnName("日期");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cname}"));
columnBinding.setColumnName("会议");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
jscp.setViewportView(tab);
}
//手动初始化表格,为paging作准备
list.clear();
query = entityManager.createQuery("select c from Cconf c order by c.cid desc");
query.setFirstResult(0);
query.setMaxResults(10);
list = org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, tab);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cday}"));
columnBinding.setColumnName("日期");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${cname}"));
columnBinding.setColumnName("会议");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
jscp.setViewportView(tab);
}
延伸问题:记录表格的分页问题(pagination)。