public List<Person> findAll() {

List<Person> result = new LinkedList<Person>();

final SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);

final PagedResultsDirContextProcessor processor =
new PagedResultsDirContextProcessor(500);

return SingleContextSource.doWithSingleContext(
ldapTemplate.getContextSource(), new LdapOperationsCallback<List<Person>>() {

@Override
public List<Person> doWithLdapOperations(LdapOperations operations) {


  do {
    List<Person> oneResult = operations.search(
        "",
        "(&(objectclass=person))",
        searchControls,
        new AttributesMapper<Person>() {
        @Override
        public Person mapFromAttributes(Attributes attributes) throws NamingException {

          Person p = new Person();
          p.setCn(attributes.get("cn")==null?"":(String) attributes.get("cn").get());
          p.setCompany(attributes.get("company")==null?"":(String) attributes.get("company").get());
          p.setDepartment(attributes.get("department")==null?"":(String) attributes.get("department").get());
          p.setsAMAccountName(attributes.get("sAMAccountName")==null?"":(String) attributes.get("sAMAccountName").get());

          return p;
        }
        },
      processor);

      result.addAll(oneResult);

    } while(processor.hasMore());

    return result;
    }
  },true,true,true);
}


SPRINGBOOT      LDAP 分页查询

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!