在使用hibernate的查询对象进行编辑查询条件时,罗列一些简单的语法代码:
//添加用户名不等于admin的条件
criteria.add(Restrictions.not(Restrictions.eq("roleName",SYSTEM_ADMIN_ROLE_NAME)));
//添加按照修改时间进行倒序排列
criteria.addOrder(Order.desc("updateTime"));
//模糊查询 ilike忽略大小写 like不忽略大小写 ANYWHERE是设置位置
criteria.add(Restrictions.ilike("voiceNumber",voiceNumber, MatchMode.ANYWHERE));
查询表中指定的列时:
//获取查询对象
Criteria criteria = getSession().createCriteria(TopicClassification.class);
//创建查询字段列表
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("uuid"));
//添加查询条件
criteria.setProjection(projectionList);
将结果去重
//将结果去重
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
分页查询
//设置查询总页数
criteria.setProjection(Projections.rowCount());
//添加排序条件
criteria.addOrder(Order.desc("updateTime"));
//添加分页条件
criteria.setFirstResult(startSize);
criteria.setMaxResults(pageSize);
HQL运算符 | QBC运算符 | 含义 |
= | Restrictions.eq() | 等于equal |
<> | Restrictions.ne() | 不等于not equal |
> | Restrictions.gt() | 大于greater than |
>= | Restrictions.ge() | 大于等于greater than or equal |
< | Restrictions.lt() | 小于less than |
<= | Restrictions.le() | 小于等于less than or equal |
is null | Restrictions.isnull() | 等于空值 |
is not null | Restrictions.isNotNull() | 非空值 |
like | Restrictions.like() | 字符串模式匹配 |
and | Restrictions.and() | 逻辑与 |
and | Restrictions.conjunction() | 逻辑与 |
or | Restrictions.or() | 逻辑或 |
or | Restrictions.disjunction() | 逻辑或 |
not | Restrictions.not() | 逻辑非 |
in(列表) | Restrictions.in() | 等于列表中的某一个值 |
not in(列表) | Restrictions.not(Restrictions.in()) | 不等于列表中任意一个值 |
between x and y | Restrictions.between() | 闭区间xy中的任意值 |
not between x and y | Restrictions.not(Restrictions..between()) | 小于值X或者大于值y |
多表联查
criteria.createAlias("mediaType", "mediaType",JoinType.INNER_JOIN).add(Restrictions.eq("mediaType.id", localMediaData.getTypeId()));
首先我在LocalMediaData实体类中封装了MediaType实体类,并且配置了多对一的关系。
<many-to-one name="mediaType" column="TYPE_ID"/>
我们在通过内连接级联查询的时候,会直接将一方的数据封装到成员变量中。
如果我们希望通过hibernate懒加载机制实现加载数据也可以,只是在查询完成时,获取的一的一方成员变量为属性值为null
只有你在get时会加载出来:
查询语句如下:
criteria.add(Restrictions.eq("mediaType.id", localMediaData.getTypeId()));
引用了博主
http://blog.csdn.net/bestlxm/article/details/6735464