乍一看似乎有点尴尬,但是它是类型安全的。不是从字符串构建查询,因此您会在运行时而不是编译时注意到错误。通过使用缩进或单独执行每个步骤,可以使查询更具可读性,而不必在一行中编写整个WHERe子句。
为了使查询不区分大小写,请将关键字和被比较的字段都转换为小写:
query.where( builder.or( builder.like( builder.lower( root.get( type.getDeclaredSingularAttribute("username", String.class) ) ), "%" + keyword.toLowerCase() + "%" ), builder.like( builder.lower( root.get( type.getDeclaredSingularAttribute("firstname", String.class) ) ), "%" + keyword.toLowerCase() + "%" ), builder.like( builder.lower( root.get( type.getDeclaredSingularAttribute("lastname", String.class) ) ), "%" + keyword.toLowerCase() + "%" ) ));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)