前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于SpringMVC+Hibernate框架的关联查询与分页查询

关于SpringMVC+Hibernate框架的关联查询与分页查询

作者头像
良月柒
发布2019-03-19 16:08:29
1.1K0
发布2019-03-19 16:08:29
举报

一、hibernete的关联查询

hibernete使用多表查询,并且要求查询某表中的某些指定字段时,就需要自己在实体类中创建一个用于关联查询的对象。因为getCurrentSession().createQuery()方法返回的是Object对象数组,无法强制转型。

我这几天做的练习实例为用户与视频之间的关联查询,用户上传视频,视频表中有上传人的ID即用户ID。但是用户表中有密码的字段,我不希望密码字段跟着查询结果一起返回出前端,但是我又不想创建一个关联查询的对象去接收。 因此我的方法是:

代码语言:javascript
复制
public List<Video> findAllVideo() {
    Query query = getCurrentSession().createQuery("from Video");
    List<Video> videoList = query.list();    for (Video video : videoList) {
        User user = new User();
        user.setUserId(video.getUser().getUserId());
        user.setUserName(video.getUser().getUserName());
        video.setUser(user);
    }    return videoList;
}

其实这个方法违背了MVC的设计理念,不应该在Dao层做业务处理,即使要过滤数据,也应该在service层过滤.

二、hibernete的分页查询

分页查询就需要传入两个参数,一个是页码,一个是条数。hibernete对Jdbc的封装,对分页查询有良好的方法调用。可以使用ScrollableResults获取到表的总条数。

例如,我想要获取Video表的总条数:

代码语言:c#
复制
public Integer getTotalCount() {
    Query query = getCurrentSession().createQuery("from Video");    //得到滚动结果集
    ScrollableResults scrollableResults = query.scroll();    //滚动到最后一行
    scrollableResults.last();    //获取滚动的条数(从0开始,要加一)
    return scrollableResults.getRowNumber() + 1;
}

要值得注意的是,它是从第0行开始计算的,因此要加1。

根据之前第一个的例子分页查找视频:

代码语言:javascript
复制
public List<Video> findVideoByPageCount(Integer pageNum, Integer pageCount) {
    Query query = getCurrentSession().createQuery("from Video");    //设置分页位置
    query.setFirstResult((pageNum - 1) * pageCount);
    query.setMaxResults(pageCount);
    List<Video> videoList = query.list();    for (Video video : videoList) {
        User user = new User();
        user.setUserId(video.getUser().getUserId());
        user.setUserName(video.getUser().getUserName());
        video.setUser(user);
    }    return videoList;
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、hibernete的关联查询
  • 二、hibernete的分页查询
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档