速い普及
1。mybatisとは何ですか
MyBatisは、プレーンSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする優れた永続レイヤーフレームワークです。
MyBatisは、ほぼすべてのJDBCコードとパラメーターの手動設定と、結果セットの検索カプセル化を排除します。 MyBatisは、構成とオリジナルマッピング、マッピングインターフェイス、JavaのPOJO(プレーンオールドJavaオブジェクト)に、データベース内のレコードに簡単なXMLまたはアノテーションを使用できます。
MyBatisはインターフェイスの結合を実装し、使用がより便利になります。
改善されたオブジェクト関係マッピング、より効率的
MyBatisは、強力なOGNLベースの式を使用して、他の要素を排除します。
2。機能アーキテクチャ
3。実行プロセス
原則の詳細な説明:
MyBatisアプリケーションは、XML構成ファイルに基づいてSQLSessionFactoryを作成します。構成は、構成に応じて2つの場所から来ています。1つは構成ファイル、もう1つはJavaコードの注釈であり、SQLSessionを取得します。 SQLSessionには、SQLを実行するために必要なすべての方法が含まれています。 SQLSessionインスタンスを介してマッピングされたSQLステートメントを直接実行して、データの追加、削除、修正、クエリ、トランザクションの提出など、および使用後のSQLSessionの閉鎖を完了できます。
この記事の重要なポイントを見てみましょう。 mybatisの単純な注釈
重要な注釈語:
@insert:sqlを挿入します。構文はXML挿入sqlとまったく同じです
@Select:クエリSQL、および構文はXML SELECT SQLとまったく同じです
@Update:sqlを更新し、XMLアップデートSQLの構文はまったく同じです
@Delete:SQLを削除すると、構文はXML削除SQLとまったく同じです
@param:高麗人参を入力します
@Results:結果コレクション
@Result:結果
1。ドメインモデル:
public class userdo {private long id; private string username; private date gmtcreate; private date gmtmodified; public long getid(){return id;} public void setid(long id){this.id = id;} public string getUsername(){return username;} public setUsermame(} public setusermamy; getgmtcreate(){return gmtcreate;} public void setgmtcreate(date gmtcreate){this.gmtcreate = gmtcreate;} public getgmtmodified(){return gmtmodified;} public void setgmtmodified(gmtmodified {gmtmodified) gmtmodified;}}2。インターフェイス定義:
public interface userdao {@insert( "t_user(gmt_create、gmt_modified、user_name)values(now()、now()、#{username})")public int insert(@param( "username")string username); @Select( "select * from t_user where id =#{id}")public userdo selectbyuserid(@param( "id")long id); @update( "update t_user set gmt_modified = now()、user_name =#{username} where id = {id}")public int udpatebyid(@u.ername ") @param( "id")long id); @delete( "delete from t_user where id =#{id}")public int udpatebyid(@param( "id")long id); }3。MyBatisXML Config:
<! - mybatis annotation-> <bean id = "sqlsessionfactory"> <プロパティ名= "dataSource" ref = "mysqlbase" /> <! - ここでは、独自のデータソースを構成する必要があります - > < /bean> <bean id = "userdao"> <property name "mapperinter" com.yuanmeng " /> <インターフェイス - > <プロパティ名= "sqlsessionfactory" ref = "sqlsessionfactory" /> <! - sqlsession Factory-> < /bean>
このようにして、注釈を使用してMyBatisのデモを完了します。とてもシンプルではありませんか?
MyBatis XMLに精通している場合は、ほとんどの場合、データベーステーブルのフィールド名をクラスDOにマッピングする必要があります。 MyBatis Annotationはマッピング関数も提供し、構文は類似しています。
@Select( "Select * From tsp_template Where id =#{id}")@result(value = {result(property = "username"、column = "user_name"、javatype = string.class、jdbctype = jdbctype.varchar)}もちろん、上記は、SQLがもはや単純ではないということです。この要件がある場合は、ユーザー情報を更新し、指定された属性値を更新することを望んでいます。つまり、XMLのように動的にSQLを生成します。その後、@Updateアノテーションを簡単かつ大まかに使用することはできません。幸いなことに、強力なMyBatisは動的なSQLアセンブリも提供します。
動的sql
対応する関係は次のとおりです
@insert:@insertprovider
@Select:@SelectProvider
@update:@updateprovider
@delete:@deleteprovider
4つのプロバイダー注釈識別子は、動的SQLを使用し、構文形式を使用します。
@updateProvider(type = userProvider.class、method = "updatesQl")
動的SQLを構築する方法
public class userprovider {/*** udpate* @param userdo userdo* @return*/public string updatesql(final userdo userdo){return new sql(){update( "t_user"); set( "gmt_modified = now()") #{username} ");} where(" id =#{id}} ");}}。toString();}}}この記事に記載されている知識ポイントは比較的基本的です。詳細な理解が必要な場合は、公式Webサイトのドキュメントを参照するか、ソースコードをお読みください。
要約:
1. XMLと注釈を選択する方法は?それは人によって異なります。誰もが独自のコーディングの習慣を持っています。 XMLと注釈には、独自の利点と短所があります。 XMLの欠点:モデル属性が変更された場合、DOからDAOにXMLに変更する必要があります。それについて考えるのは苦痛です〜xmlにも利点があります。 SQLフラグメントの再利用は便利であり、構文は親しみやすいです。注釈とは異なり、動的なステートメントを作成してクラスを作成する必要があります。さらに、SQLのセグメントが複数の場所を参照すると、コードは冗長に見えます。現時点では、XMLを使用して一緒に使用する必要があります。私はMyBatisの注釈について不平を言ったが、その注釈は役に立たないだろうか?いいえ、MyBatisは、モデル属性がしばしば変更されるシナリオに適しています。これは、反射と動的に構築されたSQLと組み合わせることができるためです(純粋にナンセンスな、個人的なアイデアは実現する必要があり、別の日に行われます)。 MyBatis Annotationの利点は、XMLの欠点を補っていると言えます。 2つはお互いを補完します〜
上記は、編集者によって導入されたMyBatis開発の注釈のクイックスタートです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!