hibernate之简单hql查询语句

package com.newtouch.demo3;

import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;

public class TestDemo {
    @Test
    public void testFoodType() throws Exception {
        SessionFactory sf = new Configuration().configure()
                .buildSessionFactory();
        Session session = sf.openSession();
        Transaction t = session.beginTransaction();
        /**
         * 插入数据
         */
        // Food f = new Food();
        // f.setFoodname("辣子鸡");
        // Food f2 = new Food();
        // f.setFoodname("黄焖鸡");
        // FoodType foodType = new FoodType();
        // foodType.setFoodtypename("川菜");
        // foodType.getFoods().add(f);
        // foodType.getFoods().add(f2);
        // session.save(f);
        // session.save(f2);
        // session.save(foodType);
        /**
         * 直接把查询的数据放入新创建的对象中需要提供对应的构造方法 不支持*
         */
        // Query query = session
        // .createQuery("select new FoodType(id,foodtypename) from FoodType");
        // System.out.println(query.list());
        // Query query = session.createQuery(" from FoodType");//
        // 这种查询方式要在配置文件中添加以下代码不然就要写出类的全名auto-import
        // // ="true"
        // System.out.println(query.list());
        // Query query = session.createQuery("select d from FoodType d");//
        // 效果等同于查询全部,只是把*替换掉
        // System.out.println(query.list());
        /**
         * 条件查询
         */
        // Query query = session
        // .createQuery("select new FoodType(id,foodtypename) from FoodType where id=?");
        // // query.setInteger(0, 2);
        // query.setParameter(0, 2);// 上下效果一样
        // System.out.println(query.list());
        // Query q = session
        // .createQuery("select new FoodType(id,foodtypename) from FoodType where id=:myid or foodtypename=:name");
        // q.setParameter("myid", 2);
        // q.setParameter("name", "川菜");
        // System.out.println(q.list());
        /**
         * 范围查询
         */
        // Query q = session
        // .createQuery("select new FoodType(id,foodtypename) from FoodType where id between ? and ?");
        // q.setParameter(0, 2);
        // q.setParameter(1, 4);
        // System.out.println(q.list());
        /**
         * 模糊查询
         */
        // Query query = session
        // .createQuery("from FoodType where foodtypename like ?");
        // query.setParameter(0, "%川%");
        // System.out.println(query.list());
        /**
         * 聚合函数
         */
        // Query query = session
        // .createQuery("select f.id,count(*) from FoodType f group by id ");
        // System.out.println(query.list());
        /**
         * 左连接
         */
        // Query q = session.createQuery("from FoodType f left join f.foods ");
        // System.out.println(q.list());
        /**
         * 分页查询
         */
        Query query = session.createQuery("from FoodType");

        ScrollableResults scroll = query.scroll();
        scroll.last();// 滚动到最后一行
        int totalCount = scroll.getRowNumber() + 1;// 拿到当前的总行数
        /**
         * 要想拿到最大行数,下面代码不能写在前面,不然只能拿到当前行数
         */
        query.setFirstResult(0);// 设置起始行
        query.setMaxResults(1);// 设置最大行数
        System.out.println("当前页面的数据" + query.list());
        System.out.println("总数据量" + totalCount);
        /**
         * 根据ID查询需要提供默认的构造方法
         */
        // FoodType foodType = (FoodType) session.get(FoodType.class, 2);
        // System.out.println(foodType);
        // Food food = (Food) session.get(Food.class, 2);
        // System.out.println(food);
        t.commit();
        session.close();
    }
}
原文地址:https://www.cnblogs.com/ShaoXin/p/7144647.html