1. Mybatis の概要
MyBatis は、カスタム SQL、ストアド プロシージャ、および高度なマッピングをサポートするファーストクラスの永続性フレームワークです。 MyBatis ではほぼすべての JDBC コードが不要になり、基本的に手動でパラメータを設定して検索結果を取得する必要がありません。 MyBatis は、単純な XML 形式または注釈を使用して構成でき、基本的なデータ要素、Map インターフェイス、および POJO (通常の Java オブジェクト) をデータベース内のレコードにマップできます。
2. MyBatis ワークフロー
(1) 設定をロードし、初期化します
トリガー条件: 設定ファイルのロード
設定は 2 つの場所から取得されます。1 つは設定ファイルで、もう 1 つは Java コードの注釈です。SQL 設定情報は MappedStatement オブジェクト (受信パラメータ マッピング設定、実行された SQL ステートメント、および結果を含む) にロードされます。 .マッピング設定)、メモリに保存されます。
(2)通話リクエストの受信
トリガー条件: Mybatis が提供する API を呼び出す
受信パラメータ: SQL ID と受信パラメータオブジェクト
処理プロセス: リクエストを下位のリクエスト処理層に渡して処理します。
(3) 操作リクエストを処理します。 トリガー条件: API インターフェース層がリクエスト
を渡します。受信パラメータ: SQL ID と受信パラメータオブジェクト
処理プロセス:
(A) SQL ID に基づいて、対応する MappedStatement オブジェクトを検索します。
(B) 入力パラメータ オブジェクトに従って MappedStatement オブジェクトを解析し、実行される最終 SQL と実行入力パラメータを取得します。
(C) データベース接続を取得し、最終的な SQL 文と実行パラメータをデータベースに渡して実行し、実行結果を取得します。
(D) 得られた実行結果をMappedStatementオブジェクト内の結果マッピング設定に従って変換し、最終的な処理結果を取得します。
(E) 接続リソースを解放します。
(4) 処理結果を返し、最終的な処理結果を返す
ORM ツールの基本的な考え方
hibernate と mybatis のどちらを使用したことがあっても、次の 1 つの共通点で比較できます。
機能アーキテクチャ
Mybatis の機能アーキテクチャは 3 つの層に分かれています:
1. API インターフェース層: 開発者はこれらのローカル API を使用してデータベースを操作します。インターフェイス層が呼び出し要求を受信すると、データ処理層を呼び出して特定のデータ処理を完了します。
2. データ処理層: 特定の SQL 検索、SQL 解析、SQL 実行および実行結果マッピング処理などを担当します。その主な目的は、呼び出し要求に従ってデータベース操作を完了することです。
3. 基本サポート層: 接続管理、トランザクション管理、設定読み込み、キャッシュ処理などの最も基本的な機能サポートを担当します。これらは最も基本的なコンポーネントとして抽出されます。上位データ処理層に最も基本的なサポートを提供します。
さらにドライバー パッケージを追加する必要があります:
ここから簡単に始めましょう:
ディレクトリは次のとおりです:
エンティティクラス User
package com.oumyye.model; public class User { private String id; private String name; private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
マッピング ファイル UserMapping.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.oumyye.mapping.UserMapping"> <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 resultType="com.oumyye.model.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 --> <!-- 根据id查询得到一个user对象 --> <select id="getUser" parameterType="String" resultType="com.oumyye.model.User"> select * from user where id=#{id} </select> </mapper>
リソース ファイル mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/oumyye/mapping/userMapping.xml"/> </mappers> </configuration>
テストクラス:
package test; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import com.oumyye.model.User; public class Tests { @Test public void test(){ String resource = "mybatis.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); /** * 映射sql的标识字符串, * com.oumyye.mapping.UserMapping是userMapper.xml文件中mapper标签的namespace属性的值, * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL */ String statement = "com.oumyye.mapping.UserMapping.getUser";//映射sql的标识字符串 //执行查询返回一个唯一user对象的sql User user = session.selectOne(statement, "1123"); System.out.println(user.toString()); } }
結果:
上記は Java Mybatis フレームワークを使い始めるための基本的なチュートリアルであり、皆さんの学習に役立つことを願っています。