HQL

HQL是Hibernate提供的一種面向對象的查詢語言;

具體就是HQL是一種面向對象的查詢語言,類似於 SQL,但不是去對錶和列進行操作,而是面向對象和它們的屬性。 HQL 查詢被 Hibernate 翻譯爲傳統的 SQL 查詢從而對數據庫進行操作。

HQL的優點和SQL的區別:

面向對象,與數據庫無關
語法與SQL類是,比較容易學習

HQL的用法:

獲得HibernateSession對象
編寫HQL語句
調用Session的createQuery方法創建Query對象執行HQL語句
如果HQL語句包含參數,則調用Query的setXxx方法爲參數賦值
調用Query對象的list等方法返回查詢結果。

HQL的一些常用示例
1.無參查詢所有

String hql="select t from UserEntity t";
     //獲得query對象,並執行hql語句
    Query query = session.createQuery(hql);
    //得到查詢結果
     List<UserEntity> list =  query.list();

2,有參查詢

String hql="from UserEntity where userName = ?";
     List<UserEntity > list =
       session.createQuery(hql)
               .setParameter(0,"小白")//設置參數替換佔位符
               .list();

3,有參查詢部分列1

 String hql="select userName,pwd from  UserEntity ";
       //查詢結果,每一個Object數組代表一行
        List<Object[]> list =
         session.createQuery(hql).list();

4,有參查詢部分列2

String hql="select new map(userName,pwd) from TeacherEntity";
		//查詢結果,每個map集合代表結果的一行
        List<Map> list=
         session.createQuery(hql).list();

5,模糊查詢

String hql="select new map(userName,pwd) " +
                "from UserEntity where userName like ?";
        List<Map> list = session.createQuery(hql)
        				//傳參時,需要加上通配符
                        .setParameter(0,"小%")
                        .list();

6,連表查詢

 String hql="select new map(s.studentName,t.teacherName,t.teacherClass) " +
                "from StudentEntity s " +
                " left join s.teacher t where t.teacherName=?";
         List<Map> list=
           session.createQuery(hql)
                   .setParameter(0,"陳老師")
                   .list();

8,分頁查詢

String hql="from UserEntity where teacherName like ?";
        List<TeacherEntity> list=
                session.createQuery(hql)
                .setParameter(0,"小%")
                .setFirstResult(0) //起始下標
                .setMaxResults(5) //每頁顯示的行數
                .list();

9,查詢單個對象

 String hql="from UserEntity where userName like ?";
      TeacherEntity t=
              (TeacherEntity) session.createQuery(hql)
                      .setParameter(0,"小%")
                      //返回查詢的第一條結果
                      .uniqueResult();

10,刪除

  String hql="delete from UserEntity  where id = ?";
     int i =   session.createQuery(hql)
                .setParameter(0,3)
                .executeUpdate(); //執行修改、刪除返回受影響的行數

11,修改

 String hql="update UserEntityset userName=? where id = ?";
     int i= session.createQuery(hql)
              .setParameter(0,"小青")
              .setParameter(1,5)
              //執行,並返回受影響行數
              .executeUpdate();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章