java分页查询 方法一 Query

方法一:

1 Action文件:stationByPage = this.sManager.getAndSearch(mainForm, searchVal, user);

2 manager文件:

public List getAndSearch(SForm form,String searchVal,User user){
  int totalPage = 1;
  int pageNum = form.getPage();
  String orgId = form.getOrgId();
  
  int count = sDAO.getNumOfStationsBySearch(orgId, searchVal, user);
  form.setRecordNum(count);
   
  String orderColum = form.getOrderColum();
  if(orderColum != null && orderColum != ""){
   sDAO.setOrderColum(orderColum);
   sDAO.setAsc(form.getAsc());
  }
  
  totalPage = (count != 0 && count%form.getPageRowNum() == 0) ?
    (count/form.getPageRowNum()) : (count/form.getPageRowNum() + 1);
  form.setTotal(totalPage);
  
  if (form.getPage() < 1) { // 默认首页
   form.setPage(1);
  }
  
  if (form.getPage() > totalPage) { // 超过最大页,默认尾页
   form.setPage(totalPage);
  }
 
  
  List result = this.sDAO.findByPageAndSearch(pageNum, orgId, searchVal, user);
  if (result.isEmpty() && pageNum >1){
   form.setPage(--pageNum);
   return sDAO.findByPageAndSearch(pageNum, orgId, searchVal, user);
  }
  return result;
 }

3 Dao文件:

 public List findByPageAndSearch(int pageNum,String orgId,String searchVal,User user) {

  try {
   String hql = "from S where station_name like '%" + searchVal + "%'" ;
  hql += " order by stationName";
   Query query = getSession().createQuery(hql);
   query.setFirstResult((pageNum-1) *PAGESIZE);
   query.setMaxResults(PAGESIZE);
   return query.list();
   
   } catch (RuntimeException re) {
   log.error("find by example failed", re);
   throw re;
  }
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 好的,我可以帮你写一个Java 分页查询代码。以下是示例代码: ```java public List<User> findUsersByPage(int pageNum, int pageSize) { int start = (pageNum - 1) * pageSize; String sql = "SELECT * FROM user LIMIT ?, ?"; List<User> userList = jdbcTemplate.query(sql, new Object[]{start, pageSize}, new BeanPropertyRowMapper<>(User.class)); return userList; } ``` 请注意,这只是一个示例代码,具体实现可能因应用场景而异。 ### 回答2: 当我们在使用Java编写分页查询代码时,通常需要以下几个步骤: 1. 首先,我们定义一个包含分页信息的类,该类包括当前页码、每页显示多少条数据以及总共有多少条数据等信息。 ```java public class PageInfo { private int currentPage; private int pageSize; private int total; // 省略getter和setter方法 } ``` 2. 接着,我们需要定义一个方法来执行分页查询。该方法接受一个PageInfo对象作为参数,以及其他可能的查询条件,然后返回对应分页数据的集合。 ```java public List<Object> queryWithPagination(PageInfo pageInfo, String condition) { // 根据查询条件condition执行数据库查询,获取满足条件的总行数total // 计算总页数 int totalPage = (int) Math.ceil((double) pageInfo.getTotal() / pageInfo.getPageSize()); // 获取当前页的起始索引 int startIndex = (pageInfo.getCurrentPage() - 1) * pageInfo.getPageSize(); // 根据起始索引和每页显示数量,执行数据库查询,获取对应分页数据的集合 List<Object> resultList = new ArrayList<>(); // 省略数据库查询过程 return resultList; } ``` 3. 最后,我们可以在调用该方法时传入PageInfo对象来获取分页数据。 ```java public static void main(String[] args) { PageInfo pageInfo = new PageInfo(); pageInfo.setCurrentPage(1); pageInfo.setPageSize(10); String condition = "WHERE age > 20"; // 假设这是查询条件 List<Object> resultList = queryWithPagination(pageInfo, condition); // 处理查询结果 // 省略代码 } ``` 通过以上三个步骤,我们就可以实现一个简单的Java分页查询代码。当然,实际应用中可能还需要处理异常、连接数据库等其他操作,这里只给出了一个基本框架。 ### 回答3: 当需要进行分页查询时,可以通过给定的页码和页面大小来控制查询的结果。下面是一个简单的Java分页查询代码示例: ```java import java.util.List; public class PageQuery { // 假设数据库中有一个名为"User"的表,包含id、name、age等字段 public List<User> getPageResults(int pageNumber, int pageSize) { // 根据页码和页面大小计算起始索引 int startIndex = (pageNumber - 1) * pageSize; // 假设这是从数据库中查询出的结果列表 List<User> userList = getAllUsersFromDB(); // 根据起始索引和页面大小截取需要的结果列表 List<User> pageResults = userList.subList(startIndex, Math.min(startIndex + pageSize, userList.size())); return pageResults; } private List<User> getAllUsersFromDB() { // 这里是从数据库中查询所有用户记录的逻辑,返回一个包含全部用户的列表 // 假设已经实现了获取所有用户的方法 return userList; } } ``` 以上代码中,getPageResults方法接收页码和页面大小作为参数。根据页码和页面大小计算起始索引,在数据库中查询出所有用户的列表后,再根据起始索引和页面大小进行截取,返回一页的查询结果。 这只是一个简单的示例,真实应用中可能会涉及到更复杂的逻辑,例如使用数据库的分页查询语句或结合前端界面进行分页展示等。希望能够对你的问题有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

manjianghong86

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值