Java Mybatis Framework を始めるための基本チュートリアル_基礎知識

WBOY
リリース: 2016-05-16 15:38:33
オリジナル
1495 人が閲覧しました

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 つの共通点で比較できます。

  • 設定ファイル (通常は XML 設定ファイル) から sessionfactory.
  • を取得します。
  • sessionfactory によって生成されたセッション
  • セッション内のデータの追加、削除、変更、トランザクション送信を完了します。
  • 使用後はセッションを閉じてください。
  • Java オブジェクトとデータベースの間にはマッピング設定ファイルがあり、通常は XML ファイルです。

機能アーキテクチャ

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

<&#63;xml version="1.0" encoding="UTF-8" &#63;>
<!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

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<!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 フレームワークを使い始めるための基本的なチュートリアルであり、皆さんの学習に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート