对于最新稳定版本,请使用 Spring LDAP 4.0.0spring-doc.cadn.net.cn

高级LDAP查询

本节涵盖了多种如何将 LDAP 查询与 Spring LDAP 结合使用的方法。spring-doc.cadn.net.cn

LDAP 查询构建器参数

LdapQueryBuilder其相关类别旨在支持所有可提供给LDAP搜索的参数。 支持以下参数:spring-doc.cadn.net.cn

LdapQueryBuilder是通过调用查询方法LdapQueryBuilder.它旨在作为一个流流构建 API,先定义基础参数,然后是过滤器规范调用。一旦过滤器条件开始定义,调用哪里方法LdapQueryBuilder,随后尝试呼叫(例如)基础被拒绝。基础搜索参数是可选的,但至少需要调用一个过滤器规范。 以下查询搜索所有对象类为:spring-doc.cadn.net.cn

例子1。搜索所有带有对象类的条目
import static org.springframework.ldap.query.LdapQueryBuilder.query;
...

List<Person> persons = ldapClient.search()
      .query(query().where("objectclass").is("person"))
      .toList(new PersonAttributesMapper());

以下查询搜索所有对象类为以及一个快递 之 家(通用名称)无名氏:spring-doc.cadn.net.cn

例子2。搜索所有带有对象类的条目cn=约翰·多
import static org.springframework.ldap.query.LdapQueryBuilder.query;
...

List<Person> persons = ldapClient.search()
      .query(query().where("objectclass").is("person").and("cn").is("John Doe"))
      .toList(new PersonAttributesMapper());

以下查询搜索所有对象类为并且从一个直流(域分量)DC=261consulting,dc=com:spring-doc.cadn.net.cn

例子3。搜索所有带有对象类的条目起点为DC=261consulting,dc=com
import static org.springframework.ldap.query.LdapQueryBuilder.query;
...

List<Person> persons = ldapClient.search()
      .query(query().base("dc=261consulting,dc=com").where("objectclass").is("person"))
      .toList(new PersonAttributesMapper());

以下查询返回快递 之 家(通用名)所有对象类为 的条目并且从一个直流(域分量)DC=261consulting,dc=com:spring-doc.cadn.net.cn

例子4。搜索所有带类的条目起点为DC=261consulting,dc=com,只返回快递 之 家属性
import static org.springframework.ldap.query.LdapQueryBuilder.query;
...

Stream<Person> persons = ldapClient.search()
      .query(query().base("dc=261consulting,dc=com")
             .attributes("cn")
             .where("objectclass").is("person")),
      .toStream(new PersonAttributesMapper());

以下查询的用途搜索一个共同名称的多种拼写(快递 之 家):spring-doc.cadn.net.cn

例子5。用 搜索标准
import static org.springframework.ldap.query.LdapQueryBuilder.query;
...
Stream<Person> persons = ldapClient.search()
      .query(query().where("objectclass").is("person"),
             .and(query().where("cn").is("Doe").or("cn").is("Doo"))
      .toStream(new PersonAttributesMapper());

Filter标准

前面的例子展示了LDAPFilter中的简单等价条件。LDAP查询构建器支持以下标准类型:spring-doc.cadn.net.cn

  • : 指定一个等于 (=) 的条件。spring-doc.cadn.net.cn

  • GTE: 指定一个大于等于(>=)条件。spring-doc.cadn.net.cn

  • 电梯: 指定一个小于等(⇐)条件。spring-doc.cadn.net.cn

  • 喜欢: 指定一个“相似”条件,其中可以包含万用符——例如,其中(“cn”)。like(“J*hn Doe”)结果如下:(cn=J*hn Doe).spring-doc.cadn.net.cn

  • 空白空间万用卡类: 指定一个条件,使所有空白空间被百搭符替换——例如,其中(“cn”)。空白空间万用卡类(“John Doe”)结果如下:(cn=约翰*无名氏).spring-doc.cadn.net.cn

  • isPresent(在场): 指定一个检查属性存在的条件——例如,其中(“cn”).isPresent()结果如下:(cn=*).spring-doc.cadn.net.cn

  • : 指定当前条件应被否定——例如,其中(“sn”).not().is(“Doe”结果如下:(!(sn=Doe))spring-doc.cadn.net.cn

硬编码Filter

有时你可能想指定硬编码的Filter作为输入LdapQuery.LdapQueryBuilder为此有两种方法:spring-doc.cadn.net.cn

  • filter(字符串hardcodedFilter):使用指定的字符串作为过滤器。注意,指定的输入字符串不会被任何方式修改,这意味着如果你是根据用户输入构建过滤器,这种方法并不特别适用。spring-doc.cadn.net.cn

  • filter(String filterFormat, String...参数):使用指定的字符串作为输入消息格式,正确编码参数并将其插入过滤字符串中指定的位置。spring-doc.cadn.net.cn

  • Filter(Filter):使用指定的Filter。spring-doc.cadn.net.cn

你不能将硬编码的滤波方法与哪里前面提到的方法。只能选择其中之一。如果你通过以下方式指定一个过滤器filter()如果你尝试打电话,会有例外哪里之后。spring-doc.cadn.net.cn