MyBatisの勉強の心得

3087 ワード

最近自分でプロジェクトを書いてMyBatisに関するものがあります.それからスレ主は白さんが黙って独学したほうがいいと言った.勉強が終わったら、実は多くのMyBatisの公式ドキュメントがはっきり書いてあることに気づきました.次は自分の勉強の心得を大まかに話しましょう.
1、道具が大事!!!MyBatisはプログラマーのsqlに対する習得度を試していますが、相対的に、書くともっと好きなようにすることができます.また、MyBatisの移植性はよくなく、データベースに依存しています.ネット上にはgeneratorもあります.それからチュートリアルにすれば、sql文を自動的に生成することができます.
2、事務のロールバックは人間的だ.Springのトランザクションロールバック(デフォルトではRuntimeExceptionとそのサブクラスのみがトリガーされるようです)よりも、MyBatisのトランザクションロールバックの方が良いです.もちろん、rollback-for=「java.lang.Exception」を設定してカスタマイズすることもできます.
3、MyBatisの外部キー.実際の設計では、データベース・テーブル間に関係があります.この時私たちは2つの方法があります.1つ目は、単純で乱暴で、プライマリコードの中で暴力的なforサイクルで操作されます.つまり、1枚のテーブルのクエリーです.2つ目はMyBatisのsql文を利用してクエリを行うことです.以前は外部キーに対して実はずっと愚かで、generatorは外部キーを生成しないようです.いろいろな牛は実はあまり全面的に話していないので、私はずっと重点をつかんでいません.次のコードを例に挙げます.
"com.demo.sys.entity.Menu" id="menuMap">  
    "id" column="id" />  
    "name" column="menu_name" />  
    "url" column="url" />  
    "active" column="isactive" />  
    "createDate" column="createdate" />  
    "updateDate" column="updatedate" />  
    "bak1" column="bak1" />  
    "bak2" column="bak2" />  
    "bak3" column="bak3" />  
    "locale" column="locale" />  
    "orderNum" column="ordernum" />  
    "module" column="module_id" select="queryModule">  
              
 
resultの部分は見なくてもいいですが、実は結果マッピングで、鍵はassociationです.その中のpropertyとcolumnは言うまでもなく、JavaBeanの属性とデータベーステーブルのカラム名です.3つ目は実はselect操作で、それからあなたはこの操作を実現する必要があります.また、このresultMapに関するクエリー操作を書く必要があります.そうすれば、連表クエリーを行うことができます.
4、データ型マッピングの問題.すべてのJavaタイプがJdbcTypeに対応できるわけではありません.JdbcTypeはtext(MySQLを使っています)と試したことがありますが、マッピングできません.でもちょっとしたテクニックは
ここをvarcharに変更すれば間違いはありません.
5、安全性の問題.MyBatisのsql文には2つの書き方があります.

        DELETE FROM
        projectinfo
        WHERE id = #{id};
    

        DELETE FROM
        projectinfo
        WHERE id = ${id};
    

何の違いもないように見えますが、実は違いが大きいです.$SQL文をコンパイルするときとは大きく異なります.$文はコンパイル時に渡されたパラメータも書き込まれ、私たちが普段書いているsql文とは違いません.一方、#はプリコンパイルを使用しており、文の中の#の部分が疑問符に置き換えられ、jdbcのPreparedStatementに似ています.また、#を使用すると、sql注入を防ぐことができます.ほとんどのsql注入は実は文のコンパイル中に実現されるからです.しかし、彼のDDL、すなわちcreate、alter、dropは$を使わなければならない.
6、MybatisのDML操作(添削改ざん)は簡単で、一括処理も難しくありません.文にforeachを直接使用すると、文の長さが長すぎることに注意します.

        
            UPDATE test_table
                SET c_a = #{item.ca},
                     c_b = #{item.cb}
            WHERE id = #{item.id}
        
 

7、締めくくり:
実はまだたくさん分かち合っていないで、trim、setなどのものを含んで、主にこれらのネット上の多くはすでに相応のブログがあって、私は贅沢に述べません.