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"));//排序
(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"));//排序
相关文章推荐
- HQL(Hibernate Query Language)使用详解
- 使用hibernate3的createSQLQuery遇到的问题
- [导入]weblogic81下使用hibernate3的update query方法应注意的问题
- 详解Hibernate的搭建及使用
- 使用hibernate的this.getSession().createSQLQuery(sql).list();方法查询数据时出现查到的数据和想象的不一致,很是郁闷,诡异
- Oracle的Sequence详解以及Hibernate如何使用Oracle的Sequence
- weblogic81下使用hibernate3的update query方法应注意的问题
- hibernate3.5使用session.createQuery()查出数据与数据库不一致
- 八步详解Hibernate的搭建及使用
- 八步详解Hibernate的搭建及使用
- 解析使用jdbc,hibernate处理clob/blob字段的详解
- Hibernate 原生查询 createSQLQuery 详解
- .NET中使用Hibernate步骤及详解
- Hibernate 里 SQL 和 HQL,Criteria Query 对Session Cache缓存使用的不同
- 使用hibernate3的createSQLQuery遇到的问题
- Hibernate的核心接口 --- Query查询详解
- Hibernate 中formula标签和query标签的使用
- Hibernate Criteria 和 Query 使用比较
- 在hql中使用left jion 遇到的问题 org.hibernate.hql.ast.QuerySyntaxException:
- getContentResolver().query()方法selection参数使用详解