学習ログをMyBatisの

まず、知人MyBatisの

  MyBatisの永続化フレームワークは、発行済普通SQLクエリ、ストアドプロシージャと高度なマッピングをサポートすることです。MyBatisのは、ほぼすべてのコードのを排除し、手動でパラメータのJDBCパッケージを設定し、結果セットを取得するために。MyBatisのは、データベースレコードに設定し、地図プリミティブ、地図インタフェースとJava POJO(プレーン古いJavaオブジェクト、普通のJavaオブジェクト)のためのシンプルなXMLまたは注釈を使用することができます。
第二に、手順を使用します 

  1.関連のjarパッケージを追加します。

  2.対応するエンティティクラスのBeanを作成します。

  3. MyBatisのプロファイルを作成します。 

  4. MyBatisのマッピングファイルを作成します。

  5. MyBatisのマッピングファイルは、プロファイルに導入します。

  6.試験。

 第三に、最適化

  クエリがマッピングファイルが複数ある場合は1、パラメータセットマップとして使用することができます

  2.個別に列挙されたプロパティファイルをdb.recourses、あなたはファイルをインポートする必要がMyBatisのプロファイル属性、利用$の後に{}

    <プロパティリソース= "db.properties"> </プロパティ>

    $ {} jdbc.driver

  エイリアスの下のパッケージからすべてのクラスのエンティティクラス、クラス名のエイリアス(コードの他人ではない便利な解釈、推奨されません)3.別名

    <typeAliases>
      <パッケージ名= "com.zhiyou100.klb.bean" />
    </ typeAliases>

  4.私たちは、トラブルシューティングに役立つために、ログ情報のlog4j.propertiesを追加します。

 併せてxmlファイル内のインターフェイスの使用

  1.一致するインターフェイス、インターフェイスおよびマッピングファイルを作成します。メソッド名name = ID

  2.マッピング・ファイル、ファイルパスに名前空間は、例えば、マッピングされた:com.zhiyou100.klb.dao.UsersDao

  3.テストプログラムの動作条件、  

    //分析conf.xml
    リーダー= Resources.getResourceAsReaderリーダー( "conf.xml");
    //オブジェクトを取得したSessionFactory
    A SqlSessionFactoryのSessionFactory SqlSessionFactoryBuilder新しい新=()ビルド(リーダー);.
    データベース操作するための//取得セッションオブジェクト
    セッションを= sessionFactory.openSession();
    //は、インタフェースの実装クラスを取得
    usersDao = session.getMapper(UsersDao.classを)。

第五に、クラス属性の不一致を持つデータベース内のフィールドを解決するために

  同じ開始エイリアス属性名、エイリアスやクラスをフィールドへのSQL文で1

  2.このresultMapを使用して  

    <! -参照このresultMapタグ- >
    <SELECT上記ID = "getClazz"のParameterType = "INT"このresultMap = "clazzMap"> </ SELECT>
    < -このresultMap :!書か数学とフィールドとの対応関係
    タイプ:どのエンティティ表現そして、の対応関係テーブルクラス
    - >
    <このresultMapタイプ=「com.zhiyou100.klb.bean.Clazz」ID =「clazzMap」>
      < - IDは:!エンティティ・クラスの主キーとの対応関係属性テーブルを示します- - >
      <ID =列"C_ID"プロパティ= "CID" />
      <結果カラム= "c_name"プロパティ= "CNAME" />
      <結果列= "teacher_id"プロパティ= "TID" /> 
    </このresultMap>

 第六に、コンティンジェンシー・テーブル・クエリ

  <! -このresultMap参照タグ- >
  <SELECT ID = "getClazz"のParameterType = "int型" =このresultMap "clazzMap">
  SELECT *クラスC、T先生、学生からのWHERE c.teacher_idのSとC = t.t_id。 = s.class_idとc.c_id = C_ID#{ID}
  </ SELECT>

  < -数学との間のこのresultMap :!ライトフィールドの対応関係
  タイプ:エンティティクラス示す対応関係テーブル
  - >
  <このresultMapタイプ= " com.zhiyou100.klb.bean.Clazz "ID =" clazzMap ">
  < - ID :!エンティティ・クラスのプライマリ・キーとの対応関係属性テーブルを示す- >
  <ID =列" C_ID "プロパティ=" CID " />
  <結果列= "c_name"プロパティ= "CNAME" />
  <結果列= "teacher_id"プロパティ= "TID" />

  <協会プロパティ= "先生"JavaTypeは= "com.zhiyou100.klb.bean.Teacher">
  <id列= "t_id"プロパティ= "TID" />
  <結果カラム= "t_name"プロパティ= "TNAME" />
  </関連>

  <コレクションプロパティ= "生" ofType = "com.zhiyou100.klb.bean.Student">
  <IDカラム= "S_ID"プロパティ= "SID" />
  <結果カラム= "s_name"プロパティ= "SNAME "/>
  <結果列=" CLASS_ID」プロパティ= "CID" />
  </コレクション>
  <! - <関連付けプロパティ= "先生"のJavaType = "com.zhiyou100.klb.bean.Teacher"
  列= "teacher_id"選択= "com.zhiyou100.klb.dao.TeacherDao.getTeacher">
  </関連> - >
  </このresultMap>

7、$でMyBatisの{}と{#}のを区別

  1. $:「コンテンツの解析に追加しません」彼は害スプライシングSQLインジェクション、SQL文の存在です。テーブル構造に渡されたとき。
  2. #:追加されました「」プレースホルダコンテンツ解析を防ぐために、SQLインジェクションをそのSQLを使用しました。

あなたが追加したときに、オブジェクトIDを返すためにどのように八、

  <インサートは、ID = = "true"をkeyProperty = "ID"のParameterType = "ユーザー" useGeneratedKeysを"追加">
    ユーザー(名前、年齢)の値(#{名前}、#{年齢})に挿入
  </インサート>

おすすめ

転載: www.cnblogs.com/kklb/p/11432250.html