`

Hibernate的Criteria查询分页示例

阅读更多
前言:需要注意的是时间区间的查询,字符串转时间一定要转换正确。
1、时间转换
/** 
     * 字符串时间通过Calendar转成Date类型 
     *  
     * @param date   字符串时间
     *  
     * @param format 匹配日期格式
     * @return 
     * @throws ParseException  
     */  
    private  Date  parseStrToDateByCalendar(String date,String format) throws ParseException{  
        SimpleDateFormat formatter = new SimpleDateFormat(format);  
        Calendar calendar=Calendar.getInstance();  
        calendar.setTime(formatter.parse(date));  
        Date convertedDate=calendar.getTime();  
        return convertedDate;  
    }  


2、分页查询
	public Map<String, Object> getHistoryAlramByType(String carNumber,
			String startTime, String endTime, int type, int status, int doflag,
			int pageNo, int pageSize, String sortName, String sortOrder) {
		Criteria criteria = getSession().createCriteria(Alarm.class);
		criteria.add(Restrictions.eq("alarmType", type));
		if (!startTime.equals("") && !endTime.equals("")) {
			Date startDate=null,endDate=null;
			try {
				startDate = this.parseStrToDateByCalendar(startTime, "yyyy-MM-dd HH:mm:ss");
			} catch (ParseException e) {
				e.printStackTrace();
			}
			try {
				endDate = this.parseStrToDateByCalendar(endTime, "yyyy-MM-dd HH:mm:ss");
			} catch (ParseException e) {
				e.printStackTrace();
			}
			criteria.add(Restrictions.between("serviceTime", startDate, endDate));
		}
		if (!carNumber.equals("")) {
			criteria.add(Restrictions.eq("carNumber", carNumber));
		}
		if (status != -2) {
			criteria.add(Restrictions.eq("status", status));
		}
		if (doflag != -1) {
			criteria.add(Restrictions.eq("doFlag", doflag));
		}
        int total =criteria.list().size();        // 统计符合条件数据的总数
		if (sortOrder.equals("asc")) {            // 按字段排序
			criteria.addOrder(Order.asc(sortName));
		} else {
			criteria.addOrder(Order.desc(sortName));
		}
		criteria.setMaxResults(pageSize);             // 最大显示记录数
		criteria.setFirstResult((pageNo-1)*pageSize); // 从第几条开始
		List<Alarm> list = criteria.list();
        
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("Total", total);
		map.put("Rows", list);
		return map;
	}
分享到:
评论

相关推荐

    最全Hibernate 参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    Hibernate 中文 html 帮助文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    hibernate 体系结构与配置 参考文档(html)

    15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组...

    Hibernate教程

    11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session...

    Hibernate3+中文参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    hibernate3.04中文文档.chm

    11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. ...

    hibernate 框架详解

    16. 条件查询(Criteria Queries) 16.1. 创建一个Criteria 实例 16.2. 限制结果集内容 16.3. 结果集排序 16.4. 关联 16.5. 动态关联抓取 16.6. 查询示例 16.7. 投影(Projections)、聚合(aggregation)和分组...

    Hibernate参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    Spring面试题

    4、 分页查询 5、 统计函数 6. 如何优化Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用Bag,多对多...

    Grails权威指南

     4.6.6 使用条件(criteria)查询  4.7 映射继承  4.8 验证领域(domain)模型  4.8.1 使用域约束(domainonstraints)  4.8.2 验证约束(constraints)  4.8.3 自定义约束(constraints) ...

Global site tag (gtag.js) - Google Analytics