常用的一些HQL查询语句详解(1)

来源:互联网 发布:php 上传图片到七牛 编辑:程序博客网 时间:2024/06/08 17:44

最近学了HQL查询语句,发现查询内容比较琐碎,现在整理一些比较常用的HQL语句分享给大家,查询的表有一下三种:Category、Topic、Msg;其中 Category与Topic是一对多的关系,Topic与Msg是一对多的关系。解释完毕,现在开始介绍常用的HQL语句:

1.简单的查询Category表里的全部内容:

Query q = session.createQuery("from Category");
 List<Category> categories = (List<Category>)q.list();

2.根据条件(id>5)查询Category表里的所有内容:

Query q = session.createQuery("from Category c where c.id >= 5");
 List<Category> categories = (List<Category>)q.list();

3.按照Category对象里面的name属性进行‘降序’排序,并出去重复(降序关键词:desc),查出表里的所有内容

Query q = session.createQuery("from Category c order by c.name desc");
 List<Category> categories = (List<Category>)q.list();

4. 用distinct去掉重复的行、order by  语句用于根据指定的列对结果集进行排序、查处符合条件的所有内容

Query q = session.createQuery("select distinct c from Category c order by c.name desc");
 List<Category> categories = (List<Category>)q.list();

5.取出id大于min并小于max的所有内容,用setParameter设置HQL语句里的值

Query q = session.createQuery("from Category c where c.id > :min and c.id < :max");
       q.setParameter("min", 2);
        q.setParameter("max", 8);

List<Category> categories = (List<Category>)q.list();

6.同上,setParameter的另外一种用法,设置HQL语句里的值。

Query q = session.createQuery("from Category c where c.id > ? and c.id < ?");
       q.setParameter(0, 2)
        q.setParameter(1, 8);
       List<Category> categories = (List<Category>)q.list();

7.查询所有内容用order by 按照name进行排序、desc进行倒序;

Query q = session.createQuery("from Category c order by c.name desc");
        q.setMaxResults(4);//设置截取查询结果的最大值
        q.setFirstResult(2);//设置从几个开始查询


0 0
原创粉丝点击