第一步:在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人生录]
网友评论