查询数据个数:
(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"));//排序