Session,Query,Criteria,SQLQuery四种工具类的使用,套路都类似,具体的使用方法的差别看代码。有注释:
/*** 测试session会话的update,delete,insert方法*/@Testpublic 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查询*/@Testpublic void testQuery(){//获取用户核心配置对象Configuration configuration = new Configuration();//加载核心配置文件,默认加载hibernate.cfg.xmlconfiguration.configure();//构建SessionFactorySessionFactory 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* 已经废弃*/@Testpublic void testCriteria(){//获取用户核心配置对象Configuration configuration = new Configuration();//加载核心配置文件,默认加载hibernate.cfg.xmlconfiguration.configure();//构建SessionFactorySessionFactory 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表达*/@Testpublic void testSQLQuery(){//获取用户核心配置对象Configuration configuration = new Configuration();//加载核心配置文件,默认加载hibernate.cfg.xmlconfiguration.configure();//构建SessionFactorySessionFactory sessionFactory = configuration.buildSessionFactory();//生产Session会话对象Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();//创建SQLQuery,注意要封装实体类需要addEntitySQLQuery 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;}