一、hql查询初步

 

 

 

 

 二、demo

1.修改demo

 1     @Test
 2     public void testCRUD_CRU(){
 3 
 4         SessionFactory sessionFactory = getSessionFactory();
 5         Session session = sessionFactory.openSession();
 6         Transaction transaction = session.beginTransaction();
 7 
 8         //hql可以写占位符 但是hibernate官方建议使用对象名的方式传参,这样更安全
 9         String hql = " update HTeacherEntity set tname = :tname where tid = :tid";
10         Query query = session.createQuery(hql).setParameter("tname","是事实是").setParameter("tid",1);
11         query.executeUpdate();
12         commit(transaction,sessionFactory,session);
13     }

 2.条件查询demo

1.传对象作为参数

 1 @Test
 2     public void testCRUD_CRU(){
 3 
 4         SessionFactory sessionFactory = getSessionFactory();
 5         Session session = sessionFactory.openSession();
 6         Transaction transaction = session.beginTransaction();
 7 
 8         //传对象当参数进行查询
 9         String hql_s1 = " from HPersonEntity where hCardEntity  = :e";
10         HCardEntity hCardEntity = new HCardEntity();
11         hCardEntity.setCid(2);
12         Query<HPersonEntity> query1 = session.createQuery(hql_s1).setParameter("e",hCardEntity);
13         if (null != query1.list()) {
14             for (HPersonEntity hTeacherEntity : query1.list()) {
15 
16                 System.out.println(hTeacherEntity);
17             }
18         }19         commit(transaction,sessionFactory,session);
20     }

2.分页查询

 1 @Test
 2     public void fenYe(){
 3 
 4         SessionFactory sessionFactory = getSessionFactory();
 5         Session session = sessionFactory.openSession();
 6         Transaction transaction = session.beginTransaction();
 7 
 8         //第几页
 9         int pageNum = 6;
10         //每页几条数据
11         int pageSize = 50;
12         String hql = " from TYhOrder1Entity ";
13         Query<TYhOrder1Entity> query = session.createQuery(hql).setFirstResult((pageNum - 1) * pageSize).setMaxResults(pageSize);
14         for (TYhOrder1Entity tYhOrder1Entity : query.list()) {
15 
16             System.out.println(tYhOrder1Entity);
17         }
18 
19         commit(transaction,sessionFactory,session);
20     }

 3.映射(部分查询)demo

 1 @Test
 2     public void testYsQuery(){
 3 
 4         SessionFactory sessionFactory = getSessionFactory();
 5         Session session = sessionFactory.openSession();
 6         Transaction transaction = session.beginTransaction();
 7 
 8         String hql = " select new TYhOrder1Entity(e.id,e.price,e.date) from TYhOrder1Entity e where 1 = 1";
 9         Query<TYhOrder1Entity> query = session.createQuery(hql);
10         for (TYhOrder1Entity tYhOrder1Entity : query.list()) {
11 
12             System.out.println("id:"+tYhOrder1Entity.getId()+"  price:"+tYhOrder1Entity.getPrice()
13                 +"  date:"+tYhOrder1Entity.getDate()
14             );
15         }
16 
17     }
1 //映射部分内容时必须有对应的构造方法
2     public TYhOrder1Entity(int id,BigDecimal price,Date date){
3 
4         this.id = id;
5         this.price = price;
6         this.date = date;
7     }

4.聚合查询

 

 1 @Test
 2     public void testGroupQuery(){
 3 
 4         SessionFactory sessionFactory = getSessionFactory();
 5         Session session = sessionFactory.openSession();
 6         Transaction transaction = session.beginTransaction();
 7 
 8         String hql = " select sum(price),max(price),min(price),avg(price),id,userId " +
 9                 "from TYhOrder1Entity where mod(id,10) = 1 group by userId ";
10         //mod(a,b) a÷b余数 取余运算
11         Query<Object[]> query = session.createQuery(hql);
12         for (Object[] objects : query.list()) {
13 
14             System.out.println(Arrays.toString(objects));
15         }
16 
17     }