getSession().createCriteria()查询

本文介绍了一种使用Hibernate Criteria API进行动态数据查询的方法。通过解析传入的参数,实现了分页查询、排序及日期范围筛选等功能。该方法适用于需要对数据库记录进行灵活查询的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Override
	public List<Dynamic> findByMap(Map<String, String> map) {
		String page = map.get("page");
		String rows = map.get("rows");
		String sort = map.get("sort");
		String order = map.get("order");
		String startDate = map.get("startDate");
		String endDate = map.get("endDate");
		
		Criteria criteria = getSession().createCriteria(Dynamic.class);
		if(StringUtils.isNotEmpty(page) && StringUtils.isNotEmpty(rows)){
			criteria.setFirstResult((Integer.parseInt(page)-1)*Integer.parseInt(rows));
			criteria.setMaxResults(Integer.parseInt(rows));
			criteria.addOrder(Order.asc("focusNews"));
		}
		if(StringUtils.isNotBlank(sort)){
			if(order.equals("desc")){
				criteria.addOrder(Order.desc(sort));
			}else{
				criteria.addOrder(Order.asc(sort));
			}
		}
		if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){
			String[] pattern = new String[]{
					"yyyy-MM","yyyyMM","yyyy/MM","yyyyMMdd","yyyy-MM-dd","yyyy/MM/dd",   
	                "yyyyMMddHHmmss",   "yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss"
	                };  
			try {
				criteria.add(Restrictions.between("createTime", DateUtils.parseDate(startDate, pattern),DateUtils.parseDate(endDate, pattern)));
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		return criteria.list();
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能体格

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

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

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

打赏作者

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

抵扣说明:

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

余额充值