JDBCTemplate分页

@GetMapping("/querySum")
    public TableDataInfo display(HttpServletRequest request,Integer pageNum,Integer pageSize)
    {
        //type 1 个人 2 机构
        String type = request.getParameter("type");
        String start = request.getParameter("start");
        String end = request.getParameter("end");
        List<Download> list = new ArrayList<>();
        String userid = UserInfoBySt.userid;
        String tenantid = UserInfoBySt.tenantid;
        int totalCnt = 0;
        List<JournalismSumDto> journalismSumDtos=new ArrayList<>();
        if(StringUtils.isNotBlank(tenantid)&& StringUtils.isNotBlank(userid)){
            if(pageNum==null) {
                pageNum = 1;
            }
            if(pageSize==null) {
                pageSize = 10;
            }
            int startRow = (pageNum-1)*pageSize;
            StringBuffer countSql = new StringBuffer("select count(1) ");
            StringBuffer resSql = new StringBuffer("SELECT a.id,a.click_count clickCount,a.download_count downloadCount,b.title name,b.publish publish,c.NAME creator ,b.displayTime displaytime");
            StringBuffer sql = new StringBuffer(" FROM _ext.tb_jou a,journa b,template2.user_ c where a.id=b.journalismId and c.USERID=b.creator and b.deleteflag='0'   ");
            List<Object> params = new ArrayList<Object>();
            sql.append(" and  b.displayTime between ? and ? ");
            if(StringUtils.isNotBlank(start)){
                params.add(start);
            }else{
                params.add("1900-07-01 00:00:00");
            }
            if(StringUtils.isNotBlank(end)){
                params.add(end);
            }else{
                params.add("2100-07-01 00:00:00");
            }
            if("1".equals(type)){
                sql.append("and b.creator = ? ");
                params.add(userid);
            }
            if("2".equals(type)){
                sql.append("and b.organizationid=? ");
                params.add(tenantid);
            }
            countSql.append(sql);
            totalCnt = jdbcTemplate.queryForObject(countSql.toString(),Integer.class,params.toArray());
            resSql.append(sql).append(" order by b.displayTime desc limit ?,? ");
            params.add(startRow);
            params.add(pageSize);
            RowMapper<JournalismSumDto> rowMapper=new BeanPropertyRowMapper<>(JournalismSumDto.class);
            journalismSumDtos = this.jdbcTemplate.query(resSql.toString(),rowMapper, params.toArray());
        }
        TableDataInfo tableDataInfo = new TableDataInfo(journalismSumDtos, totalCnt);
        tableDataInfo.setCode(HttpStatus.SUCCESS);
        tableDataInfo.setMsg("查询成功");
        return tableDataInfo;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jdbcTemplate 是 Spring Framework 提供的一个 JDBC 操作工具,用于简化 JDBC 操作。在 jdbcTemplate 中实现分页可以通过 SQL 语句中的 LIMIT 和 OFFSET 实现。 以下是一个示例代码: ```java public List<Book> getAllBooks(int pageNumber, int pageSize) { String sql = "SELECT * FROM books LIMIT ? OFFSET ?"; int offset = (pageNumber - 1) * pageSize; List<Book> books = jdbcTemplate.query(sql, new Object[]{pageSize, offset}, new BeanPropertyRowMapper<>(Book.class)); return books; } ``` 在这个示例中,我们使用 LIMIT 和 OFFSET 实现分页。`pageNumber` 表示需要查询的页码,`pageSize` 表示每页的数据条数。`offset` 的值是根据当前页码和每页条数计算出来的,即 `(pageNumber - 1) * pageSize`,这个值用于告诉数据库从哪一行开始查询。`jdbcTemplate.query` 方法会执行 SQL 语句,并将结果映射为 `Book` 类型的对象列表返回。 需要注意的是,使用 LIMIT 和 OFFSET 实现分页时,每次查询的数据量不会变化,只是查询的起始位置不同,因此在页面上需要显示总页数和总数据条数,以便用户了解数据总量。 ### 回答2: jdbctemplate 是 Spring Framework 提供的一个功能强大且易于使用的数据库访问工具。它提供了许多便捷的方法,可以简化数据库查询、插入、更新和删除操作的编码工作。 jdbctemplate 在进行分页查询时,可以使用以下方法来实现: 1. query 方法:可使用带有 RowMapper 参数的 query 方法实现分页查询。首先,需要计算出查询结果的总行数,并计算出总页数。然后,通过设置 SQL 语句的 "LIMIT" 子句,指定查询的起始位置和返回的行数。同时,使用 RowMapper 参数来映射查询结果到 Java 对象上,最后返回查询结果。 2. PaginationHelper 类:Spring Framework 还提供了 PaginationHelper 类来简化分页查询的过程。通过创建 PaginationHelper 对象,你可以将总行数、每页显示的行数和当前页数作为参数传递给 query 方法,并获取返回的分页结果。 3. PaginationQuery 类:如果你希望更加灵活地进行分页查询,可以使用 PaginationQuery 类。它提供了一种方便的方式来构建查询语句,并指定相关的分页参数。通过调用 PaginationQuery 对象的相关方法,你可以获取分页查询的结果。 总而言之,使用 jdbctemplate 进行分页查询非常方便。你可以根据具体的需求选择合适的方法,来实现查询结果的分页展示。无论是通过 query 方法、PaginationHelper 类还是 PaginationQuery 类,都可以轻松地进行分页查询,并获取所需的数据。 ### 回答3: JdbcTemplate是Spring框架提供的数据访问工具,它简化了对数据库的操作。JdbcTemplate提供了丰富的方法,其中就包括对分页查询的支持。 在JdbcTemplate中进行分页查询,需要使用到`query`或`queryForList`方法,并且传入RowMapper来解析查询结果。 首先,我们需要设置每页显示的数据量和当前页码,可以通过参数来进行传递。然后,可以使用`query`方法进行查询,其中需要设置查询的起始位置和查询的记录数量。通常,起始位置可以通过`(currentPage-1)*pageSize`来计算,记录数量即为pageSize。 以下是一个使用JdbcTemplate实现分页查询的示例代码: ``` public List<User> findUsersByPage(int currentPage, int pageSize) { int start = (currentPage - 1) * pageSize; String sql = "SELECT * FROM user LIMIT ?, ?"; List<User> userList = jdbcTemplate.query(sql, new Object[]{start, pageSize}, new RowMapper<User>() { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); // 其他属性的设置... return user; } }); return userList; } ``` 在上述代码中,我们通过`jdbcTemplate.query`方法进行分页查询。使用`LIMIT ?, ?`语句来限制查询的结果范围,然后通过传入的参数设置起始位置和记录数量。 最后,我们在RowMapper的mapRow方法中解析查询结果,并创建相应的实体对象。最终,将查询到的结果存放在一个List中,并返回。 以上就是使用JdbcTemplate实现分页查询的方法。这样,我们可以根据传入的参数来获取指定页面的数据,并且非常方便地进行分页显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值