Liferay Service Buider实现分页功能

一、Liferay可以通过自己定义SQL语句的方式从数据库获取数据,步骤如下所示:

第一步:在持久化层server.persistence创建PendFinderImpl(实体+FinderImpl).java,并继承BasePersistenceImpl<Pend>

public class PendFinderImpl extends BasePersistenceImpl<Pend> {
   
}

第二步:执行build service,生成一个方法:PendFinder并实现
修改PendFinderImpl.java,如下:
public class PendFinderImpl extends BasePersistenceImpl<Pend> implements PendFinder{
   
}

第三步:使用HQL实现代码实现 
public class PendFinderImpl extends BasePersistenceImpl<Pend> implements PendFinder{
   
    public List  findPends(String kunnr , long groupid){
        List list = null;
        String hqlString = "select a.kunnr, a.groupId, a.PNAME, a.SNAME from BB_PENDING_INFO_T a where kunnr = ? and groupId = ?";
       
        Session session = null;
       
        session = openSession();
//      session.createSQLQuery(hqlString);      //使用SQL语句
        Query q = session.createQuery(hqlString);        //使用HQL语句
       
        q.setString(0, kunnr);
        q.setLong(1, groupid);
       
        list = (List)QueryUtil.list(q, getDialect(), 0, 2);
       
       
        closeSession(session);
        return list;    }
}
备注:此处通过Liferay封装的hibernate进行数据库访问。

导入的包为:

import com.liferay.portal.kernel.dao.orm.Query;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.dao.orm.Session;
import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
import com.neusoft.demo.portlet.model.Pend;

第四步:执行build service 


第五步 在local当中,对上面方法进行包装

    public List customQuery(String kunnr , long groupid){
        return pendFinder.findPends(kunnr, groupid);
    }

第六步:执行build service
注意:如果不是第一次执行,则只需做后四步骤即可。

二、分页查询代码如下:

public List getLoginRecord(String sysId,String intfId,String beginTime,String endTime,int indexPage,int pageNumber){
		List list=null;
		String hql="SELECT trunc(VISIT_TIME),VISIT_ONE_NUMBER,VISIT_IDENTITY_NO,SYS_ID,INTF_ID,CONF_ID,VISIT_INTF_NAME,COUNT(*) AS TOTALNUMBER "
				+ "FROM T_SC_INTF_VISIT_MONITOR_DATA "
				+ "WHERE SYS_ID like ? AND VISIT_INTF_NAME like ? AND VISIT_TIME BETWEEN TO_TIMESTAMP(?, 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP(?, 'YYYY-MM-DD HH24:MI:SS') "
				+ "GROUP BY trunc(VISIT_TIME),VISIT_ONE_NUMBER,VISIT_IDENTITY_NO,SYS_ID,INTF_ID,CONF_ID,VISIT_INTF_NAME "
				+ "ORDER BY trunc(VISIT_TIME) ASC";
		Session session=openSession();
		Query query=session.createSQLQuery(hql);
		query.setString(0, sysId);   //系统ID
		query.setString(1, intfId);		//接口ID
		query.setString(2, beginTime);
		query.setString(3, endTime);
		
		query.setFirstResult(indexPage);           //从第几条开始
		query.setMaxResults(pageNumber);           //取的长度
		list=(List)QueryUtil.list(query, getDialect(), indexPage, indexPage+pageNumber, false);
		closeSession(session);
		return list;
	}
备注:query.setFirstResult(indexPage); query.setMaxResults(pageNumber);实现在数据库中进行分页,具体请查看:

Hibernate中的query.setFirstResult(),query.setMaxResults();

list=(List)QueryUtil.list(query, getDialect(), indexPage, indexPage+pageNumber, false); 为Liferay本身的分页方法。这里我们组合进行使用以增大容错率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值