以下查询语句都是用实体类为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");(指定了排序方式)
网友评论