qyerydsl版本 4.1.4
执行mysql函数
1. 日期函数过滤
StringTemplate dateExpr = Expressions.stringTemplate("DATE_FORMAT({0},'%Y-%m-%d')",qCalendar.serviceTime);
BooleanExpression where = qCalendar.hosId.eq(query.getHosId())
.and(qCalendar.accountId.eq(query.getAccountId()))
.and(dateExpr.goe(query.getStartDate()))
.and(dateExpr.loe(query.getEndDate()));
2. 使用find_in_set代替正则 (正则没有找到合适方法)
// REGEXP '(^|,)(1|2)(,|$)'
BooleanExpression aTrue = Expressions.booleanTemplate(
"FIND_IN_SET({0},{1})",
query.getScheduleType(),
// scheduleType数据库是 1,2,3这种格式
qSnScheduleSync.scheduleType.stringValue()
);
where = where.and(aTrue.isTrue());