java 代码
- /*
- * 简单的查询一个表,返回List
- */
- public void testHQL1(){
- Session session = factory.openSession();
- String hql = "from User";
- Query query = session.createQuery(hql);
- List users = query.list();
- for(User user : users){
- System.out.println(user.getName());
- System.out.println("---------------");
- }
- session.close();
- }
- /*
- *
- * 加了一些限制的条件查询,查询得到一个List
- * 这里跟 sql 语句很像,很好!
- */
- public void testHQL2(){
- Session session = factory.openSession();
- String hql = "from User where name='linweihan' and addr ='beijing'";
- Query query = session.createQuery(hql);
- List users = query.list();
- for(User user : users){
- System.out.println(user.getName());
- System.out.println("---------------");
- }
- session.close();
- }
- /*
- * 排序,使用order by和sql 非常像很好
- */
- public void testHQL3(){
- Session session = factory.openSession();
- String hql = "from User order by age desc";
- Query query = session.createQuery(hql);
- List users = query.list();
- for(User user : users){
- System.out.println(user.getAge());
- System.out.println(user.getName());
- System.out.println("---------------");
- }
- session.close();
- }
- /*
- * 分组,使用group by
- */
- public void testHQL4(){
- Session session = factory.openSession();
- String hql = "from User group by addr";
- Query query = session.createQuery(hql);
- List users = query.list();
- for(User user : users){
- System.out.println(user.getAge());
- System.out.println(user.getName());
- System.out.println(user.getAddr());
- System.out.println("---------------");
- }
- session.close();
- }
- /*
- * 使用函数
- * 这里使用avg(),平均数
- * 跟sql很像啊
- */
- public void testHQL5(){
- Session session = factory.openSession();
- String hql = "select avg(age) from User";
- //这里返回的List是float类型的
- Query query = session.createQuery(hql);
- List avg_ages = query.list();
- for(Float avg_age : avg_ages){
- System.out.println(avg_age);
- }
- session.close();
- }
- /*
- * 分组和函数相结合
- *
- */
- public void testHQL6(){
- Session session = factory.openSession();
- String hql = "select avg(age) from User group by addr";
- //这里返回的List是float类型的
- Query query = session.createQuery(hql);
- List avg_ages = query.list();
- for(Float avg_age : avg_ages){
- System.out.println(avg_age);
- }
- session.close();
- }
- /*
- * 分组和函数相结合,查询平均年龄和地址
- * 所以返回的类型应该是Object
- *
- */
- public void testHQL7(){
- Session session = factory.openSession();
- String hql = "select avg(age),addr from User group by addr";
- Query query = session.createQuery(hql);
- List avg_ages = query.list();
- for(Object[] avg_age : avg_ages){
- System.out.println(avg_age[1]+"----"+avg_age[0]);
- }
- session.close();
- }
- /*
- * 支持select 这种通用的查询
- */
- public void testHQL8(){
- Session session = factory.openSession();
- String hql = "select name,age from User";
- Query query = session.createQuery(hql);
- List infos = query.list();
- for(Object[] info : infos){
- System.out.println(info[0]+"----"+info[1]);
- }
- session.close();
- }
- /*
- * 使用update
- * Hibernate3也支持update和delete
- * 在Hibernate2中不支持
- */
- public void testHQL9(){
- Session session = factory.openSession();
- String hql = "update User set age = 100 where name = 'linweihan'";
- Query query = session.createQuery(hql);
- //需要用executeUpdate方法
- query.executeUpdate();
- //需要事务的提交才能影响数据库
- session.beginTransaction().commit();
- session.close();
- }
- /*
- * 使用delete
- */
- public void testHQL10(){
- Session session = factory.openSession();
- String hql = "delete User where name = 'linweihan'";
- Query query = session.createQuery(hql);
- //需要用executeUpdate方法
- query.executeUpdate();
- //需要事务的提交才能影响数据库
- session.beginTransaction().commit();
- session.close();
- }
- /*
- * 在JDBC支持动态的参数
- * 在hibernate中也支持
- */
- public void testHQL11(){
- Session session = factory.openSession();
- String hql = "from User where addr=? and age=?";
- Query query = session.createQuery(hql);
- query.setString(0, "fujian");
- query.setInteger(1, 22);
- List users = query.list();
- for(User user : users){
- System.out.println(user.getName());
- System.out.println("---------------");
- }
- //session.close();
- }
- /*
- * HQL中支持这么一种的动态帮定可以起别名
- */
- public void testHQL12(){
- Session session = factory.openSession();
- String hql = "from User where addr=:address and age=:age";
- Query query = session.createQuery(hql);
- query.setString("address", "fujian");
- query.setInteger("age", 22);
- List users = query.list();
- for(User user : users){
- System.out.println(user.getName());
- System.out.println("---------------");
- }
- session.close();
- }
- /*
- * 另外Hibernate允许我们把 sql语句配置到文件中
- * 因为写到程序中需要编译的,而写到配置文件中是不需要编译的
- */