hibernate中Criteria对象的语法

在使用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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值