DetachedCriteria查询、分页类和分页按钮

花了两天时间才整理好的分页类,共享一下。

说明:该方法是参考了一下网上广为流传的DetachedCriteria查询方法后改进而来的。按照自己觉得满意呈现和重用方式。

按钮的效果可以简单的做到附件图片上的效果





虽然不敢说完美的分页按钮,但是很多大型网站都是用这样的吧。

------------------------------------

分页Bean类:


----------------------

DAO层,其实不需要局限用Criteria查询的。查询好需要的数据后,构造bean类,如下。

  1.                         PaginationSupport ps = new PaginationSupport(items,
  2.                                 totalCount, pageSize, startIndex,
  3.                                 detachedCriteria);

附上完整的DetachedCriteria查询方法供参考。在网上找到的,然后参考改进了一下,因为找到的都存在BUG,下面是修正后的版本。测试,并且正常使用中。

 



----------------------

view层使用struts标签,代码有点长,供参考。注意css效果。
注意,action的方法其实需要两个即可,一个是第一次搜索的时候查询方法。另外一个是跳转到任何一页的方法。就算向前向后这样的方法其实并不需要。

    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    好的,下面分别给出使用JDBC和Hibernate实现嵌套查询和嵌套结果的代码示例。 使用JDBC实现嵌套查询和嵌套结果的示例代码: ```java // 嵌套查询示例代码 String sql = "SELECT * FROM table1 WHERE id IN (SELECT id FROM table2 WHERE name = ?)"; PreparedStatement stmt1 = connection.prepareStatement(sql); stmt1.setString(1, "test"); ResultSet rs1 = stmt1.executeQuery(); while (rs1.next()) { // 处理查询结果 } // 嵌套结果示例代码 String sql2 = "SELECT * FROM table1 WHERE id = ?"; PreparedStatement stmt2 = connection.prepareStatement(sql2); stmt2.setInt(1, 1); ResultSet rs2 = stmt2.executeQuery(); while (rs2.next()) { int id = rs2.getInt("id"); String name = rs2.getString("name"); // 使用前一个查询的结果进行嵌套查询 String sql3 = "SELECT * FROM table2 WHERE id = ?"; PreparedStatement stmt3 = connection.prepareStatement(sql3); stmt3.setInt(1, id); ResultSet rs3 = stmt3.executeQuery(); while (rs3.next()) { String desc = rs3.getString("desc"); // 处理查询结果 } } ``` 使用Hibernate实现嵌套查询和嵌套结果的示例代码: ```java // 嵌套查询示例代码 Criteria criteria1 = session.createCriteria(Table1.class); DetachedCriteria subCriteria = DetachedCriteria.forClass(Table2.class) .add(Restrictions.eq("name", "test")) .setProjection(Projections.property("id")); criteria1.add(Property.forName("id").in(subCriteria)); List<Table1> result1 = criteria1.list(); // 嵌套结果示例代码 Criteria criteria2 = session.createCriteria(Table1.class); criteria2.add(Restrictions.eq("id", 1)); List<Table1> result2 = criteria2.list(); for (Table1 table1 : result2) { int id = table1.getId(); String name = table1.getName(); // 使用前一个查询的结果进行嵌套查询 Criteria criteria3 = session.createCriteria(Table2.class); criteria3.add(Restrictions.eq("id", id)); List<Table2> result3 = criteria3.list(); for (Table2 table2 : result3) { String desc = table2.getDesc(); // 处理查询结果 } } ``` 以上代码仅作为示例,实际使用中需要根据具体情况进行调整。

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值