Bla*_*man 3 java spring hibernate spring-mvc
我有一个spring MVC应用程序,如何返回用户列表并限制结果?
我的UserDao看起来像:
public List<User> getUsers(int limit) {
return super.getHibernateTemplate()????
}
Run Code Online (Sandbox Code Playgroud)
我假设你这样做是为了分页.
您可以创建一个Query并使用setMaxResults和setFirstResult:
public List<User> getUsers(int limit)
{
Query q = getHibernateTemplate().getSession().createQuery("from User");
q.setFirstResult(0); // modify this to adjust paging
q.setMaxResults(limit);
return (List<User>) q.list();
}
Run Code Online (Sandbox Code Playgroud)
或者,使用HibernateCallback(这可能是最好的方法,虽然它更啰嗦):
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery("from User");
q.setMaxResults(limit);
return q.list();
}
});
Run Code Online (Sandbox Code Playgroud)
其中还将为您处理异常翻译.
如果您想使用HibernateTemplate,您可以执行以下操作:
@SuppressWarnings("unchecked")
public List<User> getUsers(final int limit) {
return getHibernateTemplate().executeFind(new HibernateCallback<List<User>>() {
@Override
public List<User> doInHibernate(Session session) throws HibernateException, SQLException {
return session.createCriteria(User.class).setMaxResults(limit).list();
}
});
}
Run Code Online (Sandbox Code Playgroud)
@SuppressWarnings("unchecked")
public List<User> getUsers(final int limit) {
return getHibernateTemplate().executeFind(new HibernateCallback<List<User>>() {
@Override
public List<User> doInHibernate(Session session) throws HibernateException, SQLException {
return session.createQuery("from User u").setMaxResults(limit).list();
}
});
}
Run Code Online (Sandbox Code Playgroud)
实际上不建议再使用hibernate模板了.您应该注入SessionFactory并调用SessionFactory.getCurrentSession().以下是有关如何设置它的更多信息.而这里就是为什么你应该更喜欢过的SessionFactory的HibernateTemplate.
归档时间: |
|
查看次数: |
15977 次 |
最近记录: |