MyBatis フレームワークの理論と実践の紹介




ここに画像の説明を挿入します


1. MyBatis フレームワークの概要


MyBatis は、Apache Software Foundation のオープンソース プロジェクトであり、以前は iBatis フレームワークでした。

2010 年に、このプロジェクトは Apache Software Foundation から Google Code に移行され、MyBatis に名前が変更されました。2013 年 11 月に、GitHub に移行されました (GitHub は、オープン ソースおよびプライベート ソフトウェア プロジェクトのホスティング プラットフォームです)。

MyBatis は、カスタマイズされた SQL、ストアド プロシージャ、および高度なマッピング (複数のテーブル) をサポートする優れた永続層フレームワークです。MyBatis は、ほぼすべての JDBC コード、パラメータの手動設定、結果セットの取得を回避します。jdbc のデータベースを操作するプロセスがカプセル化されているため、開発者はドライバーの登録、接続の作成、ステートメントの作成、パラメーターの手動設定、結果の取得などの jdbc の複雑なプロセス コードの処理にエネルギーを費やすことなく、SQL 自体に集中するだけで済みます。セットです。MyBatis は、単純な XML または注釈を使用して、ネイティブ型、インターフェイス、および Java POJO (Plain Old Java Object) を構成し、データベース内のレコードにマッピングできます。


1.1 MyBatisの利点

  1. 簡単に学べる: MyBatis 自体は小さくてシンプルです。サードパーティの依存関係はなく、最も単純なインストールに必要なのは、2 つの jar ファイルと複数の SQL マッピング ファイルの構成だけです。
  2. 柔軟に使用可能: MyBatis は、アプリケーションやデータベースの既存の設計に影響を与えません。SQL ステートメントは XML で記述され、統合管理と最適化が容易になります。
  3. SQLをプログラムコードから切り離す: DAO 層を提供することにより、ビジネス ロジックとデータ アクセス ロジックが分離され、システム設計がより明確になり、保守が容易になり、単体テストの実行が容易になります。SQL ステートメントとコードを分離することで、保守性が向上します。

1.2 MyBatis の欠点

  1. SQL ステートメントの作成には、特に多くのフィールドや関連テーブルがある場合、多くの作業が必要になります。
  2. SQL ステートメントはデータベースに依存しているため、データベースの移植性が低くなり、データベースを置き換えることができなくなります。
  3. フレームワークはまだ比較的粗雑で、不足している機能がいくつかあります。

2. MyBatis フレームワークの全体的なアーキテクチャ

ここに画像の説明を挿入します

1、設定ファイル
グローバル設定ファイル (コア設定ファイル): mybatis-config.xml、機能: データ ソースの設定 (データベース接続情報の設定)、マッピング ファイルの導入マッピング ファイル: XxMapper.xml、機能:
SQL ステートメント、パラメータ、結果セットのカプセル化タイプの設定、等

2、Sqlセッションファクトリー
関数: new SqlSessionFactoryBuilder().build(inputStream) を通じてビルドする SqlSession を取得
、inputStream: 構成ファイルの IO ストリームを読み取る

3、SQLセッション
機能: CRUD 操作を実行します。

4、執行者
Executor、SqlSession を呼び出すことで特定の CRUD を完了します

5、マップされたステートメント
マッピング ファイルで構成され、
特定の SQL、SQL 実行に必要なパラメーターの種類、SQL 実行結果のカプセル化の種類の 3 つの部分が含まれます。パラメーターの種類と結果セットのカプセル化の種類には、HashMap、基本データ型、pojo
の 3 種類が含まれます


3. MyBatis ORM の概要


オブジェクト リレーショナル マッピング: オブジェクト指向プログラミング言語で、異なるタイプのシステム間でデータを変換するために使用されるプログラミング テクノロジです。実際には、プログラミング言語で使用できる「仮想オブジェクト データベース」を作成します。現在、無料および有料の ORM 製品が数多く提供されており、独自の ORM ツールを作成することを好むプログラマーもいます。

MyBatis の 2 つのマッピング方法:
1. XML マッピングによる
2. アノテーションによる


4. MyBatis フレームワーク開発の概要

4.1 入門レベルのケースの構築

4.1.1 SQLデータの準備

create table user (
  id int primary key auto_increment,
  username varchar(20) not null,
  birthday date,
  sex char(1) default '男',
  address varchar(50)
);

insert into user values (null, '刘亦菲','1988-10-24','女','湖北武汉');
insert into user values (null, '胡歌','1988-11-12','男','上海');
insert into user values (null, '李现','1991-10-30','男','湖北武汉');
insert into user values (null, '宋祖儿','1999-03-22','女','北京');

4.1.2 新しい SpringBoot プロジェクトの作成

構造は次のとおりです。
ここに画像の説明を挿入します

4.1.3pom ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.6.RELEASE</version>
    </parent>

    <groupId>com.snow</groupId>
    <artifactId>studyMybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

    </dependencies>

</project>

4.1.4 設定ファイル

リソースの下の application.yml ファイルに構成を書き込みます。

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.0.108:3306/study_mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver


# mybatis 配置
mybatis:
  # 配置实体类所在的包
  type-aliases-package: com.snow.po
  # 配置 xml 文件所在的包
  mapper-locations: classpath:com/snow/mapper/*.xml
  configuration:
    # 开启驼峰命名
    map-underscore-to-camel-case: true

logging:
  level:
    com.snow.mapper: debug

エンティティクラス

import java.io.Serializable;
import java.time.LocalDate;

public class User implements Serializable {
    
    

    //  id int primary key auto_increment,
    private Integer id;

    //  username varchar(20) not null,
    private String username;

    //  birthday date,
    private LocalDate birthday;

    //  sex char(1) default '男',
    private String sex;

    //  address varchar(50)
    private String address;

    public User() {
    
    
    }

    public User(Integer id, String username, LocalDate birthday, String sex, String address) {
    
    
        this.id = id;
        this.username = username;
        this.birthday = birthday;
        this.sex = sex;
        this.address = address;
    }
	 //SET GET 略
}


4.1.5mapper 和 mapper.xml

ここに画像の説明を挿入します
マッパークラス

import com.snow.po.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {
    
    
    List<User> getList();
}

マッパー.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.snow.mapper.UserMapper">
    <select id="getList" resultType="User">
        select * from user ORDER BY id DESC
    </select>
</mapper>

4.1.6 コントローラーのビルド

@RestController
@RequestMapping("/user")
public class UserController {
    
    
    @Autowired
    private UserMapper userMapper;
    
	@GetMapping("/getList")
    public List<User> getList(){
    
    
        return userMapper.getList();
    }
}

4.2 テスト

上記の記述が完了したら、テスト用プロジェクトを起動し
、 http://localhost:8080/user/getList と入力します。

取得した表のデータは次のとおりです
ここに画像の説明を挿入します

簡単な入門事例が完成しました、JDBCより断然便利ではないでしょうか?


5. まとめ

MyBatis は、リレーショナル データベースとの対話を簡素化するために使用される人気のある Java 永続フレームワークです。以下は、MyBatis を使い始めるにあたっての私の要約です。

  1. 依存関係の導入: まず、MyBatis 関連の依存関係をプロジェクトに導入します。これは、Maven や Gradle などのビルド ツールを使用して構成できます。

  2. データ ソースの構成: MyBatis 構成ファイルで、データベース URL、ユーザー名、パスワードなどを含むデータベースとの接続情報を構成します。

  3. マッピング ファイルの定義: MyBatis はマッピング ファイルを使用して、Java オブジェクトをデータベース テーブルにマップします。マッピングファイルでは、SQL文とパラメータ間のマッピング関係を定義します。

  4. エンティティ クラスを作成する: データベース テーブルに対応するエンティティ クラスを作成し、アノテーションまたは XML を使用してフィールドとのマッピング関係を構成します。

  5. DAO インターフェイスを作成します。永続化操作のインターフェイスを定義し、そのインターフェイスで実行する必要があるデータベース操作を宣言します。

  6. DAO マッピングの構成: MyBatis 構成ファイルで、DAO インターフェースのマッピング関係を構成し、インターフェースをマッピング ファイルにバインドします。

  7. SqlSession の取得: SqlSessionFactory を通じて SqlSession オブジェクトを取得します。SqlSession は MyBatis のコア クラスであり、SQL ステートメントの実行に使用されます。

  8. データベース操作を実行する: SqlSession オブジェクトを通じて DAO インターフェイスのメソッドを呼び出し、挿入、クエリ、更新、削除などのデータベース操作を実行します。

  9. リソースを解放する: 操作が完了したら、SqlSession を閉じます。

MyBatis は、シンプルな構成と少量のコードの記述により、Java プログラムとデータベース間の対話を簡単かつ柔軟にします。MyBatis を使い始めるには、上記の基本的な手順を理解し、MyBatis の中心的な概念と使用法を学習して習得する必要があります。このまとめがお役に立てば幸いです。



ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_60915009/article/details/132773949