Liferay 自定义查询

第一步:在xxx.service.persistence里面新建BooksFinderImpl方法,继承自BasePersistenceImpl类。此处的命名必须是xxFinderImpl,前面的xx是Service.xml里面定义的实体名称。
第二步:执行service builder,此时会在service包的xxx.service.persistence下面生成BooksFinder的接口类和对应的BooksFinderUtil类。
第三步:让我们的BooksFinderImpl继承BooksFinder类。现在我们的BooksFinderImpl类如下。
publicclassBooksFinderImplextendsBasePersistenceImplimplementsBooksFinder {

}
第四步:在此类中编写我们的具体的查询方法(只是简单的示例代码),如下
public List findBooks(long userId, String keywords, int start, int end) throws SystemException{   
    List list = null;   
    String sql = null;   
    sql = "SELECT book.bookId, book.bookNo,book.bookName FROM Books book where book.userId=? and book.bookName =?";   
       
    Session session = null;   
    try {   
        session = openSession();   
        Query q = session.createQuery(sql);   
        q.setLong(0, userId);   
        q.setString(1, keywords);   
  
        list = (List)QueryUtil.list(q, getDialect(),start, end, false);   
    }   
    catch (Exception e) {   
        throw processException(e);   
    }   
    finally {   
        closeSession(session);   
    }   
       
       return list;   
}  
第五步:重新执行ServiceBuilder,现在会在BooksFinderUtil里面生成相应的接口,但是我们不能直接调用BooksFinderUtil方法,需要将我们的这个方法添加到BooksLocalServiceImpl里面。我们在BooksLocalServiceImpl里面添加相应的方法,在BooksLocalServiceImpl里面使用booksFinder.findBooks()进行调用。
第六步:再次执行ServiceBuilder,现在就可以通过BooksLocalServiceUtil类调用自定义的查询类了。

注:本文参考 [Liferay 6.1开发学习(十九):Liferay ServiceBuilder之自定义查询 | IT人生录]

你可能感兴趣的:(Liferay 自定义查询)