LdapQuery:高级构建查询

xiaoxiao2021-02-28  61

LDAP查询生成器参数 该类LdapQueryBuilder及其关联的类旨在支持可以提供给LDAP搜索的所有参数。支持以下参数: base - 指定搜索应在其中开始的LDAP树中的根DN。 searchScope - 指定搜索应该遍历的LDAP树的深度。 attributes - 指定要从搜索中返回的属性。默认是全部。 countLimit - 指定从搜索返回的最大条目数。 timeLimit - 指定搜索可能需要的最长时间。 Search filter  - 我们正在查找的条目必须符合的条件。 通过LdapQueryBuilder调用query方法创建一个LdapQueryBuilder。它的目的是作为流畅的构建器API,其中首先定义基本参数,然后是过滤器规范调用。一旦过滤器条件已经开始被调用where方法定义LdapQueryBuilder,稍后尝试呼叫例如base将被拒绝。基本搜索参数是可选的,但至少需要一个过滤器规范调用。 使用objectclass person搜索所有条目   ldapTemplate.search(      query().where("objectclass").is("person"),      new PersonAttributesMapper()); 使用objectclass person和cn = John Doe搜索所有条目   ldapTemplate.search(      query().where("objectclass").is("person")             .and("cn").is("John Doe"),      new PersonAttributesMapper()); 使用在dc = 261consulting,dc = com处开始的objectclass人员搜索所有条目   ldapTemplate.search(      query().base("dc=261consulting,dc=com")             .where("objectclass").is("person"),      new PersonAttributesMapper()); 搜索具有开始于dc = 261consulting,dc = com的objectclass人员的所有条目,仅返回cn属性   ldapTemplate.search(      query().base("dc=261consulting,dc=com")             .attributes("cn")             .where("objectclass").is("person"),      new PersonAttributesMapper()); //或用标准搜索 ldapTemplate.search(      query().where("objectclass").is("person"),             .and(query().where("cn").is("Doe").or("cn").is("Doo));      new PersonAttributesMapper()); 过滤标准 is - 指定等于条件(=)。 gte - 指定一个大于或等于条件(> =)。 lte - 指定小于或等于条件(<=)。 like- 指定查询中可以包含通配符的“like”条件,例如,where("cn").like("J*hn Doe")将导致整个过滤器(cn=J*hn Doe)。 whitespaceWildcardsLike- 指定一个条件,用通配符替换所有的空白,例如where("cn").whitespaceWildcardsLike("John Doe")将导致过滤器。(cn=John*Doe) isPresent- 指定检查是否存在属性的条件,例如where("cn").isPresent()将导致过滤器(cn=*)。 not- 指定当前条件应否定,例如where("sn").not().is("Doe)将导致过滤器(!(sn=Doe)) 硬编码过滤器 有时你会想要指定一个硬编码过滤器作为输入LdapQuery。LdapQueryBuilder有两种方法可用于此目的: filter(String hardcodedFilter) - 使用指定的字符串作为过滤器。请注意,指定的输入字符串不会以任何方式被触及,这意味着如果您要从用户输入构建过滤器,则此方法不是特别适合。 filter(String filterFormat, String… params)- 使用指定的字符串作为输入MessageFormat,正确编码参数并将其插入到过滤器字符串中的指定位置。 注意:您不能将硬编码过滤器方法与上述where方法混合; 它是一个或另一个。这意味着如果你使用过滤器指定了一个过滤器,filter()如果你尝试where之后再调用,你会得到一个异常。
转载请注明原文地址: https://www.6miu.com/read-2620492.html

最新回复(0)