第四章 添加missing API方法重载
4.1自定义查询方法
尽管在LdapTemplate中有很多的DirContext重载方法,但它不可能对每个方法都这样做,因为方法太多了,但是我们提供一种方法使用LdapTemplate来得到你想要的conetxt
比如说你要调用如下的context方法
NamingEnumerationsearch(Namename,StringfilterExpr,Object[]filterArgs,SearchControlsctls)
在LdapTemplate中没有合适的重载方法,我们可以用自定义的SearchExecutor实现
publicinterfaceSearchExecutor{
publicNamingEnumerationexecuteSearch(DirContextctx)throwsNamingException;
}
在你自己定义的执行程序(executor)中,你可以连接DirContext,调用你想要的方法,然后你需要提供一个处理程序来处理返回结果。你可以使用现有的
CollectingNameClassPairCallbackHandler,收集到一个内部集合中,为了执行搜索,在LdapTemplate中需要一个执行程序和处理程序(an executor and a handler)
最后,返回你想要的结果集合
例4.1 使用SearchExecutor和AttributesMapper执行自定义查询
packagecom.example.dao;
publicclassPersonDaoImplimpleme