使用hibernate的detachedCriteria进行查询,需要对字符串排序,按照hibernate提供的排序方式并不是十分爽,实现按照拼音排序,数据库使用的mysql。
MysqlOrder .java 写道
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.CriteriaQuery;
import org.hibernate.criterion.Order;
public class MysqlOrder extends Order{
private String propertyName;
protected MysqlOrder(String propertyName) {
super(propertyName, false);
this.propertyName = propertyName;
}
/**
* 只考虑按一个字段排序的情况
*/
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);
return " CONVERT( "+ columns[0] +" USING GBK) ";
}
public static MysqlOrder getOrder(String propertyName)
{
return new MysqlOrder(propertyName);
}
}
分享到:
相关推荐
除了基本的条件和排序,DetachedCriteria还可以进行子查询、连接查询、分组聚合等复杂操作。例如,你可以使用`createCriteria()`方法来建立关联查询,或者使用`setProjection()`设置分组或聚合函数。 **7. 总结** ...
DetachedCriteria
DetachedCriteria 查询 DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria...
### DetachedCriteria 使用详解 #### 一、基本使用 **1. 说明** `DetachedCriteria` 是 Hibernate 提供的一种灵活且强大的查询机制,它允许你在脱离 Session 的情况下构建复杂的查询标准,这意味着你可以提前构建...
"Hibernate - DetachedCriteria 的完整用法" Hibernate 的 Criteria 和 DetachedCriteria 是两个不同的概念,虽然它们都是用于查询数据的,但它们在创建和使用上有所不同。 首先,Criteria 是在线的,需要通过 ...
在Java的持久化框架Hibernate中,DetachedCriteria是一个强大的查询工具,它允许我们在不与Session交互的情况下构建查询条件。然而,DetachedCriteria在处理复杂的关联查询,尤其是涉及到表连接(JOIN)时,可能存在...
### DetachedCriteria 使用详解 #### 一、背景与概述 在Web开发中,经常会遇到需要根据用户提供的条件进行动态查询的需求。例如,在社交平台中,用户可以设置多种筛选条件来进行高级搜索,这时就需要动态生成SQL...
浅谈DetachedCriteria和Criteria的使用方法 DetachedCriteria和Criteria是Hibernate框架中两个重要的查询工具,用于动态生成SQL语句,进行查询。在Web编程中,DetachedCriteria和Criteria可以解决动态条件查询的...
另外,Hibernate的 Criteria API 还可以配合DetachedCriteria使用,实现延迟加载(Lazy Loading),这对于处理大数据量时的性能优化至关重要。延迟加载允许我们在需要时才加载关联的对象,避免一次性加载大量数据...
DetachedCriteria criteria = DetachedCriteria.forClass(Blog.class); criteria.add(Restrictions.eq("blogger.id", bloggerId)); criteria.addOrder(Order.asc("postTime")); List<Blog> blogs = session....
在MySQL中,使用`LIMIT`关键字进行分页,这里展示第2页(即从第1条记录开始,每页3条记录)。 #### HQL分页 ```java public void show(int page, int num) { String hql = "SELECT s.ename, s.empno FROM Emp s ...
3. **设置排序**: ```java criteria.addOrder(Order.asc("creationDate")); ``` 4. **分组和聚合**: ```java criteria.setProjection(Projections.groupProperty("country")); criteria.setProjection...
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); detachedCriteria.add(Expression.eq("username", "admin")); List<User> users = session.createCriteria(User.class)....
4. 设置排序:使用Criteria的setOrder()或addOrder()方法指定排序规则。 5. 执行查询:最后,调用Criteria的list()或uniqueResult()方法获取结果。 在Spring框架中,HibernateTemplate提供了一种方便的方式来执行...
Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode(联合查询抓取的模式)、设置排序方式,对于 Criteria 还可以设置 FlushMode(冲刷 Session 的方式)和 ...
3. 添加排序: ```java criteria.addOrder(Order.asc("creationDate")); ``` 4. 使用投影进行聚合操作: ```java ProjectionList projections = Projections.projectionList(); projections.add(Projections....
5. Criteria API和DetachedCriteria:进一步深入,探讨如何使用Criteria API执行复杂的查询,并介绍DetachedCriteria,用于在不同会话间构建和执行查询。 6. Native SQL:当需要充分利用数据库特定特性时,可以使用...
- **Sort Order**:设置查询结果的排序方式,通过`Criteria`的`addOrder(Order)`方法实现。 - **FlushMode**:`Criteria`还允许设置`FlushMode`,控制何时将缓冲区中的更改同步到数据库,影响事务管理。 #### 三...
5. ** Criteria和DetachedCriteria**:详细阐述Criteria查询的使用,包括条件查询、排序、分页,以及DetachedCriteria的概念,用于创建可复用的查询模板。 6. **事务和缓存**:讨论Hibernate的事务管理,包括编程式...