您的位置:首页 > 产品设计 > UI/UE

hibernate中query的使用详解

2015-02-13 23:45 218 查看
查询数据个数:

(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"));//排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: