在 QueryDSL 中使用 FIND_IN_SET 函数,可以通过以下方式实现:

  1. 首先添加 MySQL 函数支持。在 QueryDSL 的 JPAQueryFactory 中,可以通过 addFlag() 方法添加 MySQL 的函数支持:
JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
queryFactory.addFlag("org.hibernate.dialect.MySQL5Dialect");
  1. 然后使用 Expressions.stringTemplate() 方法来创建 FIND_IN_SET 函数的表达式:
String value = "1";
String field = "1,2,3";
BooleanExpression expression = Expressions.booleanTemplate("FIND_IN_SET({0}, {1}) > 0", value, field);

这里使用了 Expressions.booleanTemplate() 方法创建一个布尔表达式,其中 {0} 和 {1} 分别代表函数的两个参数,即 value 和 field。在表达式中使用了 FIND_IN_SET 函数,如果找到了 value,则返回的值大于 0,表示条件成立。

  1. 最后在查询中使用上面创建的布尔表达式进行条件查询:
List<Entity> entities = queryFactory.selectFrom(QEntity.entity)
    .where(expression)
    .fetch();

这里使用了 selectFrom() 方法和 where() 方法进行查询,并将上面创建的布尔表达式作为条件。查询结果将返回符合条件的 Entity 对象的列表。

querydsl中使用FIND_IN_SET

原文地址: https://www.cveoy.top/t/topic/Y9e 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录