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