一、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 }
本文来自博客园,作者:荣慕平,转载请注明原文链接:https://www.cnblogs.com/rongmuping/articles/16124782.html