Hibernate中的查询

以下查询语句都是用实体类为User为例:

1.查询表中所有:

Query query = session.createQuery("from User");

2.查询指定的列:

可以为表指定别名:Query query = session.createQuery("select u.name,u.age from User u");

可以直接通过实体类中的属性:

            Query query = session.createQuery("select u.name,u.age from User u");

3.将查询到的数据直接放在对象中:

    Query query = session.createQuery("select new User(u.name,u.age) from User u");

4.条件查询:

    如果条件是从其他地方传递过来的:

                        方式一:Query query = session.createQuery("from User where id=?");

为参数赋值有两种方式:

        (1):如果知道参数的类型,可以直接通过例如 query.setInteger(索引, 要赋旳值);索引的方式赋值,索引从0开始,即第一个占位符的索引为0;

        (2):query.setParameter(0, 1);第一个参数也是索引,第二个参数表示要赋的值

                       方式二:Query query = session.createQuery("from User where id=:uid");

为参数起别名:赋值方式:query.setParameter("uid", 4);

5.between and 条件查询:

Query query = session.createQuery("from User where age between :age1 and :age2");

6.模糊查询:

Query query = session.createQuery("from User where name like ?");

Query query = session.createQuery("from User where name like :name1");

7.聚合函数:

count avg max min sum

统计表中的记录数:

Query query = session.createQuery("select count(*) from User");

按照年龄分组:

Query query = session.createQuery("select age,count(*) from User group by age");

按照年龄分组并且查询年龄个数大于1的:(having用于筛选分组后符合条件的数据

select age,count(*) from User group by age having count(*)>1;

8.分组查询:

Query query = session.createQuery("from User order by age");(默认情况下按照升序方式

Query query = session.createQuery("from User order by age desc");(指定了排序方式)

你可能感兴趣的:(Hibernate中的查询)