`
xiaoZ5919
  • 浏览: 404702 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73196
社区版块
存档分类
最新评论

扩展hibernate Criteria的Order使其支持sql片段(oracle)

 
阅读更多

       Criteria的Order功能简洁,只支持按照某个属性(字段)的排序,如果想要实现order by min(id) 这样的应用场景就没戏儿了,起初我想用interceptor的onPrepareStatement()修改sql,但受困于spring管理事务,如用interceptor就得所用的session都使用interceptor,而不能做到灵活使用。我们知道projection和Restrictions都支持嵌入某个sql片段,我们就参照他们实现一个吧具体代码如下:public class UDOrder extends Order {

	
	private String sql;
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 6069765923185860527L;

	public UDOrder(String propertyName, boolean ascending) {
		super(propertyName, ascending);
		this.sql = propertyName;
	}
	

	@Override
	public String toString() {
		
		return sql;
	}

	@Override
	public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
			throws HibernateException {
		
		return StringHelper.replace( sql, "{alias}", criteriaQuery.getSQLAlias(criteria) );
	}
	
	public static Order sql(String sql){
		
		return new UDOrder(sql, true);
	}
	
	
}

 

分享到:
评论

相关推荐

    Oracle的SQL分页实践

    使用JDBC时,可以结合LIMIT和OFFSET子句(Oracle不支持LIMIT,但可以通过ROWNUM模拟)来实现分页,而在Hibernate中,可以使用Criteria API或HQL的`setFirstResult`和`setMaxResults`方法来实现相同的功能。...

    Hibernate+Struts2+Spring+Oracle分页亲测

    **Oracle** 是一款强大的关系型数据库管理系统,支持复杂的SQL查询和事务处理。在分页场景下,Oracle提供了`ROWNUM`伪列或者`FETCH NEXT`子句结合`OFFSET`来实现分页查询。例如,`SELECT * FROM table WHERE ROWNUM ...

    hibernate源码分析过程

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

    hibernate入门

    Hibernate 提供了面向对象的查询语言HQL(Hibernate Query Language)和Criteria API,用于替代SQL查询。HQL类似SQL,但操作的是对象而不是表格;Criteria API则是基于对象的动态查询方式。 ### 九、缓存机制 ...

    SSH+ORACLE通用分页

    在SSH框架中,我们可以利用Hibernate的Criteria或HQL(Hibernate Query Language)来实现分页查询。Criteria API允许我们动态构建查询条件,而HQL更接近于SQL,但面向对象。例如,使用Criteria API进行分页查询: `...

    oracle 分页完整代码

    例如,在Hibernate中,我们可以利用`CriteriaQuery`或`Query`对象的`setFirstResult()`和`setMaxResults()`方法来实现分页。 总之,Oracle的分页可以通过ROWNUM伪列配合Java的JDBC实现,也可以借助ORM框架进行更...

    hibernate学习笔记_北大青鸟课堂笔记全文

    它支持添加限制条件(Restrictions)、排序(Order)、分组(Projections)等,非常灵活。 8. Criteria API与Querydsl结合 Querydsl是一个强大的查询工具,可以与Hibernate的Criteria API结合使用,提供更加强大的...

    hibernate中实现真分页和假分页技术

    ORDER BY ...)`(Oracle、SQL Server等)。然而,Hibernate原生并不直接支持这些特性,我们需要自定义SQL查询或者使用`ScrollableResults`接口来实现。 #### 使用自定义SQL查询 在实体类上添加`@NamedNativeQuery...

    Hibernate数据检索(HQL).rar

    Hibernate支持多种数据库,包括MySQL、Oracle、PostgreSQL等,并且提供了丰富的API供开发者使用。 **二、HQL简介** Hibernate查询语言(HQL)是Hibernate框架内建的一种面向对象的查询语言,它的语法结构类似于SQL...

    hibernate分页

    在Java开发领域,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者通过Java对象来操作数据库,而无需编写大量的SQL语句。当我们处理大量数据时,分页查询是必不可少的,因为它能有效地提高应用程序...

    精通hibernate持久化对象技术.pdf

    3. **跨数据库平台的兼容性**:Hibernate能够支持多种数据库系统,如MySQL、Oracle、SQL Server等,使得应用程序更容易移植。 4. **强大的映射功能**:Hibernate支持复杂的数据类型映射,包括一对一、一对多和多对多...

    支持多数据库的ORM框架ef-orm.zip

    EF中除了Criteria API以外,可以直接使用“SQL语句”或者“SQL片段”。但是这些SQL语句并不是直接传送给JDBC驱动的,而是 有着一个数据库方言层,经过方言层处理的SQL语句,就具备了在当前数据库上正确操作的能力。...

    各种数据库分页源码基于SSH、MVC下的分页操作

    Hibernate则提供了Criteria、HQL和SQL查询方式来配合分页,例如使用`setFirstResult()`和`setMaxResults()`方法进行分页查询。 **MVC模式下的分页** MVC模式是一种将模型(Model)、视图(View)和控制器...

    struts+hibernate实现的网络购物系统毕业设计—(包含完整源码可运行).rar

    Hibernate作为ORM框架,消除了Java代码与SQL之间的直接交互,提供了一种面向对象的方式来操作数据库。在购物系统中,Hibernate可以管理商品、用户、订单等各种实体类的生命周期,包括创建、读取、更新和删除(CRUD)...

    4个常见的JAVA J2EE 面试问题 源创

    以上四个问题涵盖了Oracle数据库操作、ORM框架使用、SQL查询优化以及日志框架配置等多个方面,对准备J2EE面试的求职者来说非常实用。希望通过对这些问题的解答,能够帮助大家更好地掌握相关知识点,在实际工作中也能...

    jdbc基础和参考

    Criteria 1.hibernate提供的更面向对象的一种查询方式。 准备工作: 1.java中的POJO对象存在 2.数据库,表得存在 3.hibernate的配置文件(hibernate.cfg.xml)得存在 4.POJO.hbm.xml文件存在 5.hibernate的jar包以及...

    分页查询

    1. 常见的SQL分页查询方法有:LIMIT + OFFSET(MySQL)、ROW_NUMBER() OVER (ORDER BY)(SQL Server)和ROWNUM(Oracle)等。这些方法根据不同的数据库系统有不同的实现语法。 2. 注意事项:分页查询时,应避免全表...

    JavaWeb 数据库分页原理解析 保证你看得懂 简单易学

    1. **基于RowNum的分页**:在支持行号函数(如Oracle的ROWNUM, MySQL的@rownum, SQL Server的ROW_NUMBER())的数据库中,可以利用子查询和行号函数来实现分页。例如,在MySQL中,可以使用以下SQL语句: ```sql ...

Global site tag (gtag.js) - Google Analytics