hibernate中query的使用详解

 

查询数据个数:

(Integer)session.createQuery("selectcount(*) from User").iterate().next();

 

使用HQL删除数据:

       String hql = "delete user where age>18";

       Query query = session.createQuery(hql);

       int ref = query.executeUpdate();

       tran.commit();

//更新数据

Transaction tx= session.beginTransaction();

Query query =session.createQuery("update User set name='momor' where name='bbb'");

query.executeUpdate();

tx.commit();

session.close();

 

也可以在where子句上进行表达式,例如:

Query query =session.createQuery("from User user where (user.age / 10 = 3)");

也可以在where子句上使用and、or,例如:

Query query =session.createQuery("from User user where (user.age > 20) and (user.name= 'caterpillar')");

is not nullL与is null则可以测试字段值是否为空值,例如:

Query query =session.createQuery("from User user where user.name is not null");

between可以测试字段值是否在指定的范围之内,例如:

Query query =session.createQuery("from User user where user.age between 20 and30");

可以使用in或not in来测试字段值是否在您指定的集合中,例如:

Query query =session.createQuery("from User user where user.name in('caterpillar','momor')");

like或not like可以让您进行模糊条件搜寻,例如想搜寻名称中含有cater开头的数据:

Query query =session.createQuery("from User user where user.name like 'cater%'");

可以对查询结果使用order by进行排序:

Query query =session.createQuery("from User user order by user.age");

可使用desc反排序:

Query query =session.createQuery("from User user order by user.age desc");

可同时指定两个以上的排序方式,例如先按照"age"反序排列,如果"age"相同,则按照"name"顺序排列:

Query query = session.createQuery("fromUser user order by user.age desc, user.name");

可以配合GROUP BY子句,自动将指定的字段依相同的内容群组,例如依字段"sex"分组并作平均:

Query query =session.createQuery("select user.sex, avg(user.age) from User user groupby user.sex");

还可以结合having子句,例如只将平均大于20的数据分组显示出来:

Query query =session.createQuery("select user.sex, avg(user.age) from User user groupby user.sex having avg(user.age) > 20");

 

 

 

使用SQL查询:

 List<News> list =session.createSQLQuery("select * fromNews").addEntity(News.class).list();

 

 使用条件查询:

 Criteria c =session.createCriteria(News.class);//News是类,所以N大写

       c.add(Expression.lt("date", "date5"));

       c.add(Expression.between("date", "date1","date8"));

       c.addOrder(Order.desc("date"));//排序

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值