Session,Query,Criteria,SQLQuery四种工具类的使用,套路都类似,具体的使用方法的差别看代码。有注释:
/**
* 测试session会话的update,delete,insert方法
*/
@Test
public void testSession(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
//获得全新的session会话
Session session = sessionFactory.openSession();
//开启事务
Transaction transaction = session.beginTransaction();
// User user = (User)session.load(User.class,2);
User user = new User(0,"leiheng","1234",Date.valueOf("1997-05-13"));
session.save(user);
System.out.println(user);
//提交事务
transaction.commit();
//手动关闭session会话
session.close();
sessionFactory.close();
return;
}
/**
* 测试Query查询
*/
@Test
public void testQuery(){
//获取用户核心配置对象
Configuration configuration = new Configuration();
//加载核心配置文件,默认加载hibernate.cfg.xml
configuration.configure();
//构建SessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
//生产Session会话对象
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//获取Query查询对象,Hibernate通过类来映射表
Query query = session.createQuery("from User where username = ?");
query.setParameter(0,"liqiaoyu");
// //分页查询limit ?,?
// query.setFirstResult(0);
// query.setMaxResults(3);//从0数据开始一次3个
Object o = query.uniqueResult();
System.out.println(o);
//返回多行数据
/**
* list()多行
* uniqueResult()单行
*/
// List list = query.list();
// for(Object o:list){
// System.out.println(o);
// }
//手动关闭session会话
session.close();
sessionFactory.close();
return;
}
/**
* 测试Criteria
* 已经废弃
*/
@Test
public void testCriteria(){
//获取用户核心配置对象
Configuration configuration = new Configuration();
//加载核心配置文件,默认加载hibernate.cfg.xml
configuration.configure();
//构建SessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
//生产Session会话对象
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//创建Criteria对象
Criteria criteria = session.createCriteria(User.class);
User user = new User(5,"leiheng","1234",Date.valueOf("1997-07-08"));
//根据属性来取对象,在Restrictions静态方法中提供条件,查询由critearia对象处理
//gt是大于,ge是大于等于
criteria.add(Restrictions.gt("id",2));
System.out.println(criteria.list());
//模糊查询
criteria.add(Restrictions.like("username","%li%"));
//其余建议百度,套路类似,反正都是一个接口
System.out.println(criteria.list());
//手动关闭session会话
transaction.commit();;
session.close();
sessionFactory.close();
return;
}
/**
* SQLQuery
* 使用原生sql来进行查询,因为并不是所有sql都可以用hql表达
*/
@Test
public void testSQLQuery(){
//获取用户核心配置对象
Configuration configuration = new Configuration();
//加载核心配置文件,默认加载hibernate.cfg.xml
configuration.configure();
//构建SessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
//生产Session会话对象
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//创建SQLQuery,注意要封装实体类需要addEntity
SQLQuery sqlQuery = session.createSQLQuery("select * from user").addEntity(User.class);
List<Object> list = sqlQuery.list();
for(Object o:list){
System.out.println(o.toString());
}
//手动关闭session会话
transaction.commit();;
session.close();
sessionFactory.close();
return;
}