hibernate中各种类型的查询条件拼接:
一、正常的传参查询(精确查询)
String shopAttendanceCode = queryHash.get("shopAttendanceCode");
if (!StringUtils.isEmpty(shopAttendanceCode)) {
conditionHash.put("shopAttendanceCode = ?{paramIndex} ", shopAttendanceCode);
}
二、正常的传参查询(模糊查询)
String likeShopCode = queryHash.get("likeShopCode");
if (!StringUtils.isEmpty(likeShopCode)) {
conditionHash.put("shopCode like ?{paramIndex} ", "%" + likeShopCode + "%");
}
三、日期类型的查询
String plainDate = queryHash.get("plainDate");
if (!StringUtils.isEmpty(plainDate)) {
conditionHash.put("plainDate = ?{paramIndex} ", StringConverters.ToDatePattern(plainDate,"yyyy-MM-dd"));//黄颜色部分返回Date类型
}
四、日期范围查询
String startDate = queryHash.get("startDate");
String endDate = queryHash.get("endDate");
if (!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
conditionHash.put("plainDate >= ?{paramIndex} ", StringConverters.ToDatePattern(startDate,"yyyy-MM-dd"));
conditionHash.put("plainDate <= ?{paramIndex} ", StringConverters.ToDatePattern(endDate,"yyyy-MM-dd"));
}
五、in条件查询
String inShopCode = queryHash.get("inshopcode");
if (!StringUtils.isEmpty(inShopCode)) {
//必须先将传过来的字符串转成一个数据,将数组以参数的形式传递
List<String> str = Arrays.asList(inShopCode.split(","));
conditionHash.put("shopAttendanceCode in (?{paramIndex}) ", str);
}