MyBatisは、XML記述子または注釈を介してオブジェクトをストアドプロシージャまたはSQLステートメントに関連付けるJava Persistenceフレームワークです。
MyBatisは、Apacheライセンス2.0に基づいて配布されるフリーソフトウェアであり、Ibatis 3.0のブランチバージョンです。メンテナンスチームには、Ibatisのスタートアップメンバーも含まれています。
他のオブジェクトリレーショナルマッピングフレームワークとは異なり、MyBatisはJavaオブジェクトをデータベーステーブルに関連付けるのではなく、JavaメソッドをSQLステートメントで関連付けます。 MyBatisを使用すると、ユーザーは、ストアドプロシージャ、ビュー、さまざまな複雑なクエリ、データベースの独自の機能など、さまざまなデータベース機能を最大限に活用できます。レガシーデータベース、不規則なデータベースを操作したい場合、またはSQL実行を完全に制御する場合は、MyBatisが適切な選択です。
JDBCと比較して、MyBatisは関連するコードを簡素化します。SQLステートメントは1行のコードで実行できます。 MyBatisは、SQLステートメントの実行結果をオブジェクトツリーと宣言的にマッピングするマッピングエンジンを提供します。 SQLステートメントは、組み込みのXML様式言語を使用するか、Apache Velocity-Integratedプラグインを使用して動的に生成できます。
MyBatisは、Spring FrameworkおよびGoogle Guiceと統合されており、開発者が依存関係の問題から救われます。
MyBatisは、宣言的なデータキャッシュをサポートしています。 SQLステートメントが「キャッシュ可能」としてマークされると、データベースが最初に実行されたときに取得したすべてのデータは、キャッシュに保存されます。このステートメントが将来実行されると、結果は再びデータベースを押すのではなく、キャッシュから読み取られます。 MyBatisは、デフォルトでJava Hashmapベースのキャッシュ実装と、Oscache、Ehcache、Hazelcast、Memcachedとの接続用のデフォルトのコネクタを提供します。 MyBatisは、他のキャッシュ実装にAPIも提供します。
重要なポイント
この期間中に学習した後、MyBatisの主なプロセスは次の手順になることはできません
1. XML構成ファイルからSessionFactoryを取得し、SessionFactoryから対応するセッションを生成します。
2。セッションオブジェクトを使用して、対応するCRUD操作(追加、削除、修正、クエリ)と、ビジネスデータの対応するトランザクションコントロールを完了します。
3.過剰なリソース消費を避けるために、使用後に対応するセッションを閉じます
4.対応するマッパーXMLファイルを使用して、ビジネスエンティティのJavabeanとデータベーステーブル間の対応するマップ操作を構成します。
戦前の準備:
1.開発環境Eclipse Javaee IDE、JDK 1.6、データベースMySQL 5.5
2。後で使用するために、対応するJARパッケージをダウンロードしてください
mybatis-3.2.3.zip減圧後、Mybatis-3.2.3.jarを取り出し、=>ダウンロードアドレス:http://code.google.com/p/mybatis/(mybatis coreパッケージ)
MyBatis-Generator-Core-1.3.1.jar =>ダウンロードアドレス:http://code.google.com/p/mybatis/wiki/generator(mybatisは構成ファイルパッケージを自動的に生成します)
mysql-connector-java-5.1.26-bin.jar =>ダウンロードアドレス:http://dev.mysql.com/downloads/connector/j/(MySQLのJDBCドライバーパッケージ)
建設手順
次に、以下の図に示すように、Eclipseの下でMyBatisdemoと呼ばれるJavaプロジェクトプロジェクトを作成し、それぞれ構成とマッパーがフォルダーであるように、対応するパッケージ構造とフォルダー構造を作成できます。
対応するデモランナープログラムとJavabeanオブジェクトは、パッケージDavid.mybatis.demoとパッケージDavid.mybatis.modelの下に保存され、ダウンロードしたばかりのサードパーティの瓶パッケージはLIBフォルダーに保存されます。
次のディレクトリを作成した後、下の図に示すように、対応するJARパッケージを追加できます
完了後、次のSQLを実行して、3つのテーブル、訪問者(訪問者テーブル)、Webサイト(Webサイトテーブル)、チャンネル(チャンネルテーブル)など、デモに必要なテーブル構造を確立します。
/*訪問者の作成*/テーブルビジターの作成ステータスint Not Null Default 1、CreateTime DateTime)/*チャネルテーブルの作成
これがすべて行われた後、私たちはそれをし始めます〜
最初に述べたように、すべてのMyBatis構成はXML構成ファイルから発生します。構成フォルダーにmybatis_demo_config.xmlという名前の新しい構成ファイルを作成する必要があります。これは、後で操作するために必要なコア操作の1つです。
このファイルを構成するときは、階層的な順序要件があり、自由に変更できない<configuration>ノードの要素に注意を払う必要があります。それ以外の場合、XML構成ファイルをロードするときに例外が発生し、その後の操作が失敗します。
特定のノードの説明については、http://mybatis.github.io/mybatis-3/zh/configuration.html#を確認できます。ここでは、より一般的に使用されるノード、タイプティアーゼ、環境、マッパーについてのみ説明します。
1。Typealiase=>エイリアスノード。このノードのプロパティを設定して、このエイリアスが構成ファイルに完全に適格な名前の代わりに使用されるようにすることができます。
たとえば、<typealias type = "david.mybatis.model.visitor" alias = "visitor" />
2。環境=>環境ノード、データ接続関連情報の構成
3。mappers=> SQLマッピングステートメントを構成します。
最も単純な構成は次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype構成public " - // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" type = "David.MyBatis.Model.Visitor" Alias = "Visitor" /> < /typeAliase> <環境> <環境= "Development"> <環境ID = "Development"> <transactionManager Type = "JDBC"> < /transactionManager> <DataSource Type = "Pooled"> <Driver "com.mysql.jdbcl.jdbcl.jdbcl ?useunicode = true&charaterencoding = utf8 in utf8 fone in suppeat inshine insertion-> <property name = "url" value = "jdbc:mysql://127.0.0.0.1:3306/mybatis_db? /> </dataSource> </環境> </環境> <mappers> <mapper resource = "mapper/visitormapper.xml"/> </mappers> </configuration>
パッケージDavid.mybatis.demoの下にMybatisutilsと呼ばれる新しいクラスを作成します。このクラスは、複数の再利用を促進するために抽出されたsqlsessionとclose sqlsessionを取得する方法を保存します。
Package David.mybatis.demo; Import java.io.inputStream; Import org.apache.ibatis.io.resources; Import org.apache.ibatis.session.squache.ibatis.session.session.SqlSessionFactory; Import org.apache.ibatis.session.session.ssession.S. David.mybatis.model.crud_enum; public class mybatisutils {private static final string config_path = "config/mybatis_demo_config.xml"; /**データベースアクセスリンクを取得*/ public static sqlsession getsqlsession(){sqlsession session = null; try {inputstream stream = resources.getResourceasStream(config_path); //対応するデータベース環境は、対応する環境構成に従って読み取ることができますsqlSessionFactory Factory = new sqlsessionfactorybuilder().build(stream); session = factory.opensession(); } catch(例外e){// todo:例外を処理するe.printstacktrace(); } return session; } / * *データベースアクセスリンクを取得 * / public static void closessession(sqlsession session){session.close(); } /**操作レコードメッセージを返します* / public static void showmessages(crud_enum type、int count){switch(type){case add:system.out.println( "addd" + count + "record");壊す;ケース削除:system.out.println( "削除" + count + "records");壊す;ケース更新:System.out.println( "updated" + count + "records");壊す;ケースクエリ:system.out.println( "matched" + count + "records");壊す;ケースリスト:System.out.println( "Total" + count + "Record");壊す;デフォルト:break; }}}パッケージDavid.mybatis.modelの下に訪問者という名前の新しいクラスを作成して、対応するまたはマッピングとして使用します。
パッケージDavid.mybatis.model; Import java.text.simpledateformat; Import java.util.date; public class Visitor {private int id;プライベート文字列名;プライベート文字列メール;プライベートINTステータス;プライベートデートCreateTime; public visitor(){// todo auto-enerated constructor stub createtime = new date(); } public Visitor(string name、string email){this.name = name; this.email = email; this.status = 1; this.createtime = new date(); } public int getId(){return id; } public void setName(string name){this.name = name; } public string getname(){return name; } public void setemail(string email){this.email = email; } public string getemail(){return email; } public date getCreatetime(){return createTime; } @Override public String toString(){// todo auto-fenated method stub return string.format( "{id:%d、name:%s、createTime:%s}"、id、name、new simpledateformat( "yyyy-mm-dd hh:mm:mm:ss")。 }}パッケージDavid.mybatis.demoの下に新しいvisitormapper.xmlを作成して、対応するSQLステートメントをマッピングします。
ここでは、namespace => david.mybatis.demo.ivisitoroperationは、対応するパッケージの下の実際のファイル名に関連付けられている必要があることに注意してください。それ以外の場合、対応するマッピングファイルを正常にロードすることはできません。
<Mapper NameSpace = "David.mybatis.demo.ivisitoroperation"> <Select id = "BasicQuery" parametertype = "int" resultType = "visitor"> select * select * select * select *
次のプログラムを次に実行します
public static void testbasicquery(int id){sqlsession session = mybatisutils.getsqlsession(); try {Visitor Visitor =(Visitor)Session.Selectone( "David.mybatis.demo.ivisitoroperation.basicquery"、id); mybatisutils.closessession(session); System.out.println(訪問者); } catch(例外e){// todo:例外を処理}}最も単純な実行結果が発表されています
これはMyBatisシリーズのHelloword〜です