HQLとQBCの検索方式

2863 ワード

詳細な概念はpptで:
1.HQL
(1)Queryインタフェース
  • Object uniqueResult()は、一致条件の一意のインスタンスを返し、ない場合nullです.

  • 2.QBC(Criteriaインタフェース、Criterionインタフェース、Expressionクラス<なので設定条件はこのメソッド内>)
    (1)セッション内作成
  • Criteria createCriteria(class class)永続化クラス名
  • (2)Criteriaインタフェース
  • Object uniqueResult()
  • List list()
  • Criterion add(Criterion criterion)クエリー結果にいくつかの制限を追加
  • (3)Criterionインタフェース,Restictions(実装クラス),内部は静的メソッドである.
    (4)Criteria  
  • addOrder(Order order)ソート
  • (5)Static Order asc(String name)
  • Static Order desc(String propertyName)

  • (6)Query
  • List list()各行に複数の結果が含まれている場合、結果はobject[]を返し、クエリ結果はlistとなります.

  • (7)クエリー部分の属性:
    public class Student extends Person
    {
        private String id;
        private String name;
        private Set course = new HashSet();
        private int age;
        private String cardId;
    public class Course
    {
        private String id;
        private String name;
        private Set students = new HashSet();
    public class Team
    {
        private String id;
        private String teamName;
        private Set students = new HashSet();
  • session.creatQuery(「select s.name,s.age from Studio as」)----フリーデータ
  • をクエリー
         List list =query.list();
       for(int i=0;i   {
          Object[] obj =(Object[])list.get(i);
    obj[0]はnameである.obj[1]はage
         }
  • Query query = session.creatQuery("select new Student(s.name,s.age) from Student s");返される離散的な値は、オブジェクトとして見られます.

  • ただし、この2つのパラメータを含むコンストラクション関数をStudentクラスに追加する必要があります.
    Student student =(Student)list.get(i);
    student.getName();
    student.getAge();

     
     
    (7)接続クエリー(内部接続、左外部接続、右外部接続)
  • Query query =session.creatQuery("form Team as t inner join t.students");innerは
  • を省略できます
    2つのテーブルの並列セットを返し、1つのobject[]を返し、object[0]が1枚目、object[1]が2枚目を返します.
        SQL:select  *from team join student on team.id = student.team_id;
  • hibernate.cfg.xml

  • trueクエリーのフォーマット
  • select * from team left outer join student on team.id=student.team_id

  • 左外部ジョイン(左テーブルを参照物、すなわち左テーブルの内容が存在する)は、右外部ジョインとは反対
  • select * from team right outer join student on team.id=student.team_id

  •