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(); } }