Java类 - 如何将Generic Object传递给函数

时间:2015-04-27 15:33:26

标签: java hibernate function

这是我的基本功能:

public static void main(String[] a) throws Exception {

    Session sessione = HibernateUtil.getSessionFactory().openSession();
    Query query = sessione.createSQLQuery("select * from User").addEntity(User.class);
    List<User> rows = query.list();
    Iterator it = rows.iterator();
    while (it.hasNext()) {
        User usr = (User) it.next();
        System.out.println(usr.getEmail());
        System.out.println(usr.getName());
        System.out.println(usr.getIdUser());
        System.out.println(usr.getUser());

    }

此功能能够连接并在我的数据库上执行查询...

我想创建相同的函数,但更通用...前一个只针对一个表(User),新的一个必须能够接受String参数作为输入查询以及将执行查询的类类型。这将允许我只使用一行来执行查询。

它应该是这样的:

public static void queryResult(String query, <ClassOfTable>) {

    Session sessione = HibernateUtil.getSessionFactory().openSession();
    Query qy = sessione.createSQLQuery(query).addEntity(<ClassOfTable>.class);
    List<<ClassOfTable>> rows = qy.list();
    Iterator it = rows.iterator();
    while (it.hasNext()) {
        <ClassOfTable> obj = (<ClassOfTable>) it.next();
    }

}

您找到ClassOfTable的地方我不知道如何“概括”代码...

我希望明白......

P.S。 ClassOfTable应该是DB(Hibernate)中表的类代表。

感谢。

1 个答案:

答案 0 :(得分:4)

        True
        True
        True
        True
        False //"76009244561", // Dankort (PBS)
        True
        True
        True
        True
        True
        True
        True

如果您打算返回结果集,请使用:

public static <T> void queryResult(String query, Class<? extends T> clazz) {
    Session session = HibernateUtil.getSessionFactory().openSession();
    Query q = session.createSQLQuery(query).addEntity(clazz);
    List rows = q.list();
    Iterator it = rows.iterator();
    while (it.hasNext()) {
        T t = (T) it.next();
        // do your work on object t
    }
}