Javaの知識13のHibernateクエリ言語(HQL)、この資料の注釈付きバージョン休止状態に説明する例

1、簡単な概要          

1.1、

1)  SQL: tableNameのSELECTから指向データベース*;
2)  HQLクエリー(Hibernateのクエリ言語):クエリ言語オブジェクト指向休止提供。
    例:session.createQuery(「tableNameのから」)  //とSQL文の1)ポイントのアイデンティティ、効果をチェックアウトが同じである
3)  基準クエリ、完全にオブジェクト指向のクエリ(基準、QBCて、クエリ)
4 )  のSQLQuery、ネイティブSQLクエリのロジックを達成するのはHQLは難しく、より複雑です

      短所:ないクロスデータベースプラットフォーム、データベースを変更した場合、SQL文は変更する可能性があることができます
      使用シナリオを:複雑なSQLの場合は、HQLの状況を達成することができない、あなたは、ローカルのSQLクエリを使用することができます

HQLクエリーは注意する:
      1を、HQLクエリーとき =「true」の自動インポートは、それがfalseの場合、trueに設定するには、ときHQLを書き、クラスの完全な名前を指定するたとえば、:
           1.1、クエリq = session.createQuery( "から従業員)"; // =自動インポート"をtrueに"とき
            1.2、Q = session.createQueryクエリ( "から com.shore.model.Employee "); // =自動インポート"をfalseに"とき

       2は、と注釈バージョン(真のデフォルト)「真の」自動インポート=可能であり、クラスの完全な名前を書かない書きます。では、XML構成バージョン、あなたが指定する必要があり、「真の」自動インポートを= 、指定されていないこの地域コードが真である場合、上記のようにわずか1ポイント1.2などの点を記述します。

1.2、すべての列を照会

1つのクエリのクエリ(「従業員から」)= session.createQuery。// OK 
2クエリのクエリ= session.createQuery( "com.shore.model.Employeeから"); // OK 
3クエリのクエリ= session.createQuery( "選択*従業員から"); // 错误、不支持* 
4クエリのクエリ= session.createQuery( "従業員の電子から電子を選択して"); // OK 
5システム。アウト .println(query.list()); // 把结果打印到控台上

1.3、クエリが列を指定します

1つのクエリのクエリ= session.createQuery(「従業員から選択し、名前、性別、給与」);
2システム。アウト .println(query.list());

1.4、クエリ指定された列、自動包装オブジェクト

1つのクエリのクエリ= session.createQuery( "を選択し、新しい従業員からcom.shore.model.SubEmployee(名前、性別、給与を)" );
2システム。アウト .println(query.list());

1.5条件お問い合わせ

  1.5.1、クエリ条件のプレースホルダ(?)

1つのクエリのクエリ= session.createQuery( "を選択し、新しい従業員からcom.shore.model.SubEmployee(名前、性別、給与)DEPARTMENT_ID =の " );
2  // query.setParameter(0、1); // 或者下面的setInteger(0、1)方法也行
3 query.setInteger(0、1 )。
4システム。アウト .println(query.list());

  1.5.2、パラメータの名前問い合わせの条件(

1クエリのクエリ= session.createQuery( "DEPARTMENT_ID =従業員から新しいcom.shore.model.SubEmployee(名前、性別、給与)を選択 DEPTID" );
2 query.setParameter( "DEPTID"、1 );
3システム。アウト .println(query.list());

  1.5.3、クエリ条件は(間....そして、...)クエリの範囲

1クエリのクエリ= session.createQuery( "従業員どこDEPARTMENT_IDから新しいcom.shore.model.SubEmployee(名前、性別、給与)を選択の間 :D1   :D2 " );
2 query.setParameter( " D1 "、1);   // ?也可以用占位符实现
3 query.setParameter( " D2 "、2 )。
4システム。アウト .println(query.list());

  1.5.4、あいまい検索クエリの条件   のような

1つのクエリのクエリ= session.createQueryは(「従業員どこ名から新しいcom.shore.model.SubEmployee(名前、性別、給与)を選択するように?」);
2 query.setParameter(0、 "%の三の%" )。
3システム。アウト .println(query.list());

1.6、統計の集計関数

1つのクエリのクエリ= session.createQuery( "SELECT COUNT(*)従業員からどこの名前のような?" );
2 query.setParameter(0、 "%の三の%" )。
3システム。アウト .println(query.list());

1.7、グループ化クエリ(グループによる

1つのクエリのクエリ= session.createQuery( "従業員から)*(カウント、部門を選択して、グループ DEPARTMENT_ID" ); //根据部门外键
 2システム。アウト .println(query.list());

1.8、クエリ(コネクタ、外部コネクタ、左/右接続)に参加

  エン:内部結合に参加==  //交差点が
  参加左:ない参加する場合は、左は、テーブルのプライマリテーブルの左側に、参加し、テーブルの右へ左表のデータの整合性の側、およびデータが空でもよいです。交差点の右側にテーブル+テーブルの左側のすべてのデータ//
  右の接続:右に参加、テーブルにメインテーブルの権利、参加できない場合は、右の表のデータの整合性、テーブルの左のデータが空になることがあります。テーブルの左側部分の右側にあるすべてのデータテーブルの+ //交差点
  外部接続:外部結合  //セットと

1つの コネクタ1)マッピング関係は、オブジェクトのプロパティを直接書き込むことができ、関連する時間が設定されている]
 2クエリsession.createQuery Q =(「従業員からE インナー参加 e.departmentを」); //従業員の部門であります外部キー(DEPARTMENT_ID Employeeテーブル)マッピング・エンティティ
 3。 
4。 2)左側に接続
 5。クエリsession.createQuery Qは=( "従業員からEは、参加左 e.departmentを" );
 6  
。7  3)右外部結合。
 8。クエリsession.createQuery = Q(「部署Dから右参加 d.employee」); 外部キー(EMPLOYEE_ID)//マッピングする
。9  
10  押圧FETCH使用に接続された4)が、データは右テーブル、テーブルが左に充填されているであろうオブジェクト!]
 11クエリQ = session.createQuery(「従業員から電子インナージョインフェッチ e.department」)。
12  q.list()。
13          
14  迫切左外连接5)
 15クエリQ = session.createQuery( "従業員からの電子左ジョインフェッチ)e.department"。

1.9、HQLクエリの最適化

1クエリのクエリ= session.getNamedQuery( "getAllDept"); // パラメータ名getAllDept定義
2 query.setParameter(0、10);

  その後に対応するXML設定ファイル SQL文を記述します。(髪複雑なSQL文の場合は、あなたが変更することができ、リリース後にプロジェクトを促進するために、そうすることができます)

1  例、中:Employee.hbm.xmlのSQL文のxmlに保存されている 2      < クエリ= "getAllDept" >   //ここパラメータ名getAllDept上記対応するように
 3。         <[CDATA [!
4。             従業員DからDEPARTMENT_ID <? ;   //ここでのSQL文を書くためではなく、文はHQL
 5          ]]> 
6      </ クエリ>

2、HQLクエリ言語の例  

 

 

 

 

 

 

 

 

原作:DSHORE

ホーム著者: http://www.cnblogs.com/dshore123/

元から:https://www.cnblogs.com/dshore123/p/11546575.html

転載、複製ようこそ、ソースを示すようにしてください。この記事は参考になりました場合は、右下隅をクリックすることができ勧告を、またはコメント、ありがとうございます!

おすすめ

転載: www.cnblogs.com/dshore123/p/11588358.html