`
wang_decheng
  • 浏览: 48313 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
文章分类
社区版块
存档分类
最新评论

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;
	}
 
分享到:
评论
1 楼 waw0931 2016-05-19  
分页在哪里?

相关推荐

    struts+hibernate+sql server2005分页的小项目

    由于Hibernate支持SQL Server 2005,因此我们可以通过HQL(Hibernate Query Language)或者原生SQL来实现分页查询。 **4. 分页实现** 在本项目中,分页通常包含以下步骤: - **计算总记录数**:使用Hibernate的...

    关于Hibernate分页类和jdbc的sql分页完美融合

    这样的类通常会有一个用于执行分页查询的方法,比如`doPagingQuery`,它接受SQL查询语句、起始索引、每页大小等参数,并返回一个自定义的分页对象,如"Page.java"所示。 `Page.java`文件可能定义了一个名为`Page`的...

    使用hibernate分页查询

    `Criteria`提供了一种更面向对象的方式来执行SQL查询,而`Query` API则对应于原生的SQL语句。在这些API中,我们可以设置`setFirstResult()`和`setMaxResults()`方法来实现分页。`setFirstResult()`指定从哪一条记录...

    Hibernate连表查询 Hibernate连表查询

    ### 使用原生SQL进行连表查询 除了使用HQL外,还可以选择直接使用原生SQL来执行连表查询。例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String ...

    完整Struts2 HIBERNATE实现分页

    通常,我们会使用Hibernate提供的原生SQL或者HQL来实现分页查询。例如,可以定义一个`SoftDAO`类,并在其内部实现如下方法: ```java public List<Soft> findPaginated(int start, int pageSize) { Session ...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页.doc

    物理分页是直接在SQL语句中添加LIMIT或OFFSET等关键字,利用数据库自身的分页功能,减少了数据处理的量,提高了查询速度。Hibernate框架就采用了这种策略,其分页效率相对较高。 针对iBatis的这一局限,我们可以...

    struts+hibernate的通用分页程序

    2. **SQL 优化:** 对于某些数据库如 SQL Server 或 Oracle,可以使用特定的SQL语法(例如 SQL Server 的 TOP N 或 Oracle 的 ROWNUM )来优化分页查询。 3. **自定义 SQL:** 在某些情况下,可能需要直接执行...

    hibernate源码分析过程

    Hibernate 支持 native SQL 操作,可以使用原生 SQL 语句来查询对象。 性能 Hibernate 的性能可以通过一级缓存和二级缓存来提高。一级缓存可以缓存对象的状态,二级缓存可以缓存查询结果。 Hibernate 也支持第三方...

    hibernate查询详解

    创建`SQLQuery`对象并执行SQL语句,然后将结果映射到实体类: ```java SQLQuery q = s.createSQLQuery("select * from user").addEntity(User.class); List<User> rs = q.list(); ``` 然而,这种方式破坏了...

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...

    struts+hibernate分页

    - 对于原生SQL查询,直接在SQL语句中使用`LIMIT`和`OFFSET`或者`TOP`(对于SQL Server)。 3. **示例代码**: ```java // Struts Action public ActionForward execute(ActionMapping mapping, ActionForm form...

    hibernate试验

    本实验“Hibernate试验”主要关注的是通过Hibernate使用SQL查询,包括本地SQL检索、命名SQL查询以及自定义SQL语句,同时也涉及到QBC(Query By Criteria)查询方式,这是一种基于对象的查询方式,与HQL(Hibernate ...

    struts+hibernate 分页实例

    服务层方法使用Hibernate查询语言(HQL)或原生SQL来获取指定范围的数据,并返回给Action,再由Action将这些数据传递给视图层(通常为JSP页面)进行展示。 在Hibernate中,实现分页主要涉及两个关键参数:`...

    hibernate代码优化基于配置的多表查询

    使用HQL(Hibernate Query Language)或Criteria API替代原生SQL,可以让Hibernate更好地优化查询。它们可以利用Hibernate的元数据信息生成更高效的SQL,同时避免SQL注入风险。 4. **分页查询**: 当处理大量数据...

    Java+MySQL+JSP+Java原生手写实现分页

    没有使用ORM框架如Hibernate或MyBatis,而是使用原生的JDBC(Java Database Connectivity)进行数据库操作。这包括建立数据库连接、编译SQL语句、设置参数、执行查询、处理结果集等步骤。这种方式可以让开发者更好...

    三种方式实现分页

    例如,如果我们有一个SQL查询语句用于获取所有用户,可以将其修改为分页查询,如下所示: ```sql SELECT * FROM users LIMIT ? OFFSET ? ``` 这里的问号(?)是预编译参数,我们在Java代码中设置实际的分页参数,...

    Hibernate-Criteria 模糊查询

    4. **原生SQL**:虽然`Criteria`主要基于对象模型进行查询,但Hibernate也允许你执行原生SQL查询,这在某些特定场景下非常有用。 ```java criteria.add(Expression.sql("lower({alias}.name) like lower(?)", ...

    MyBatis面试专题及答案.pdf

    分页是MyBatis支持的功能之一,可以通过RowBounds对象或者编写原生SQL语句来实现分页查询。MyBatis还提供了分页插件,其原理是通过拦截器拦截SQL执行过程,在执行前对SQL语句进行改造,以实现分页逻辑。 MyBatis的...

    mysql 分页

    在Hibernate框架中,与MySQL结合进行分页查询也是开发者经常会遇到的问题。本文将详细介绍如何在Hibernate中实现MySQL的分页查询,以及相关知识点。 一、MySQL分页原理 MySQL分页主要依赖于`LIMIT`和`OFFSET`两个...

    java分页技术汇总

    不同的数据库系统提供了原生的分页机制,如MySQL的`LIMIT`和`OFFSET`,Oracle的`ROWNUM`,SQL Server的`TOP`和`OFFSET-FETCH`等,可以直接在SQL语句中实现分页。 了解和掌握这些分页技术,可以帮助开发者根据项目...

Global site tag (gtag.js) - Google Analytics