我们在业务层使用hibernate,但任务是, 通过在swing中使用jtable来显示数据库中的动态数据(波动)。 代码:
标准条件= session.createCriteria(User.class);
//这里的user.class是hibernate中的pojo类。
列出studentlist = criteria.list();
的System.out.println( “记录” + studentlist);
这里的数据显示在hibernate控制台中,但是如何以“jtable”的格式表示数据。
答案 0 :(得分:2)
我们可以从休眠中检索一个对象列表。要在JTable中显示对象,只需从AbstractTableModel继承一个类,并提供getRowCount(),getColumnCount()和getValueAt()方法。并且通常需要覆盖getColumnName方法以显示所需的列名称,而不是X,Y,Z形式。 假设您在某个数据库中有一个PERSON表及其对应的持久类Person。
PersonTableModel.java的来源:
import org.hibernate.*;
import org.hibernate.cfg.*;
import java.util.*;
import javax.swing.table.AbstractTableModel;
public class PersonTableModel extends AbstractTableModel
{
private static final long serialVersionUID = 6105842825518764825L;
private ArrayList<Person> PersonList;
public PersonTableModel()
{
super();
SessionFactory sf=new Configuration().configure().buildSessionFactory();
Session session=sf.openSession();
Query q=session.createQuery("from Person");
PersonList=new ArrayList<Person>(q.list());
session.close();
sf.close();
}
public int getRowCount()
{
return PersonList.size();
}
public int getColumnCount()
{
return 5;
}
public Object getValueAt(int rowIndex, int columnIndex)
{
Person p=PersonList.get(rowIndex);
Object[] values=new Object[]{p.getId(),p.getFirstname(),p.getLastname(),
p.getAge(),p.getDescription()};
return values[columnIndex];
}
@Override
public String getColumnName(int column)
{
String[] columnNames=new String[]{"id","FirstName","LastName","Age","description"};
return columnNames[column];
}
}
然后创建一个PersonTableModel对象并将JTable的模型设置为
答案 1 :(得分:1)
我建议您阅读Java中的教程How to use tables。
如果您有更具体的需求,请编辑您的问题以添加详细信息。
答案 2 :(得分:1)
我从来没有使用过hibernate,但是基于提供的代码,它看起来像是在List中返回数据库中的数据。因此,您需要创建一个自定义TableModel来访问List中的数据。
BeanTableModel可能会帮助你。