最近学了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);//设置从几个开始查询