Hibernate 原生sql语句进行分页查询

public List findStockByStockPOAndTradeDate(int from, int size, StockPO po,
			Date tradeDate) {
		List list = new ArrayList();
		List result = new ArrayList();
		logger.info("##startfindStockByStockPOAndTradeDate");
		SimpleDateFormat sdf = new SimpleDateFormat("dd-M月-yy");
		String date = sdf.format(tradeDate);
		StringBuffer sql = new StringBuffer(
				"SELECT stkmp.* FROM STKMP stkmp INNER JOIN(SELECT  st.STOCK_ID stid ,st.COUNTRY cou FROM STKMP  st INNER JOIN stock sto ON st.STOCK_ID=sto.STOCK_ID and st.COUNTRY=sto.COUNTRY WHERE  sto.country='");
		sql.append(po.getStockPK().getCountry())
				.append("' AND  sto.mkt_type='").append(po.getMarketType())
				.append("' AND  sto.cur_type='").append(po.getCurrencyType());
		if (null != po.getStockPK().getStockNO()) {
			sql.append("'AND sto.STOCK_ID='").append(
					po.getStockPK().getStockNO());
		}
		if (null != po.getStockInternationalId()) {
			sql.append("'AND sto.STOCK_NID='").append(
					po.getStockInternationalId());
		}
		if (null != po.getStockReservationType4Entity()) {
			sql.append("' AND sto.SP_ENT= '").append(
					po.getStockReservationType4Entity());
		}
		if (null != po.getStockReservationType4Strip()) {
			sql.append("' AND sto.SP_PP= '").append(
					po.getStockReservationType4Strip());
		}
		if (null != po.getStockReservationType4TDCC()) {
			sql.append("' AND sto.SP_TSCD= '").append(
					po.getStockReservationType4TDCC());
		}
		sql
				.append(
						"' GROUP BY st.STOCK_ID ,st.COUNTRY) stock2 ON stkmp.STOCK_ID=stock2.stid AND stkmp.TRADE_DATE='")
				.append(date)
				.append(
						"' and stkmp.COUNTRY=stock2.cou ORDER BY stkmp.TRADE_DATE desc");

		this.getSession().clear();
		Query query = this.getSession().createSQLQuery(sql.toString())
				.addEntity("stkmp", StockMarketPricePO.class);
		query.setMaxResults(size);
		query.setFirstResult(from);
		result = query.list();
		logger.info("##message"+result.size());
		list.add(0, result);
		StringBuffer sqltest = new StringBuffer(
				"SELECT count(*) FROM STKMP stkmp INNER JOIN(SELECT  st.STOCK_ID stid ,st.COUNTRY cou FROM STKMP  st INNER JOIN stock sto ON st.STOCK_ID=sto.STOCK_ID and st.COUNTRY=sto.COUNTRY WHERE  sto.country='");
		sqltest.append(po.getStockPK().getCountry()).append(
				"' AND  sto.mkt_type='").append(po.getMarketType()).append(
				"' AND  sto.cur_type='").append(po.getCurrencyType());
		if (null != po.getStockPK().getStockNO()) {
			sqltest.append("'AND sto.STOCK_ID='").append(
					po.getStockPK().getStockNO());
		}
		if (null != po.getStockInternationalId()) {
			sqltest.append("'AND sto.STOCK_NID='").append(
					po.getStockInternationalId());
		}
		if (null != po.getStockReservationType4Entity()) {
			sqltest.append("' AND sto.SP_ENT= '").append(
					po.getStockReservationType4Entity());
		}
		if (null != po.getStockReservationType4Strip()) {
			sqltest.append("' AND sto.SP_PP= '").append(
					po.getStockReservationType4Strip());
		}
		if (null != po.getStockReservationType4TDCC()) {
			sqltest.append("' AND sto.SP_TSCD= '").append(
					po.getStockReservationType4TDCC());
		}
		sqltest
				.append(
						"' GROUP BY st.STOCK_ID ,st.COUNTRY) stock2 ON stkmp.STOCK_ID=stock2.stid AND stkmp.TRADE_DATE='")
				.append(date)
				.append(
						"' and stkmp.COUNTRY=stock2.cou ORDER BY stkmp.TRADE_DATE desc");

		this.getSession().clear();
		Query querycount = this.getSession().createSQLQuery(sqltest.toString());
		int count = ((BigDecimal) querycount.uniqueResult()).intValue();
		logger.info("##endfindStockByStockPO" + list.size() + "--" + count);
		list.add(1, new Integer(count));
		return list;
	}
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值