記事ディレクトリ
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の利点
- 簡単に学べる: MyBatis 自体は小さくてシンプルです。サードパーティの依存関係はなく、最も単純なインストールに必要なのは、2 つの jar ファイルと複数の SQL マッピング ファイルの構成だけです。
- 柔軟に使用可能: MyBatis は、アプリケーションやデータベースの既存の設計に影響を与えません。SQL ステートメントは XML で記述され、統合管理と最適化が容易になります。
- SQLをプログラムコードから切り離す: DAO 層を提供することにより、ビジネス ロジックとデータ アクセス ロジックが分離され、システム設計がより明確になり、保守が容易になり、単体テストの実行が容易になります。SQL ステートメントとコードを分離することで、保守性が向上します。
1.2 MyBatis の欠点
- SQL ステートメントの作成には、特に多くのフィールドや関連テーブルがある場合、多くの作業が必要になります。
- SQL ステートメントはデータベースに依存しているため、データベースの移植性が低くなり、データベースを置き換えることができなくなります。
- フレームワークはまだ比較的粗雑で、不足している機能がいくつかあります。
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 を使い始めるにあたっての私の要約です。
-
依存関係の導入: まず、MyBatis 関連の依存関係をプロジェクトに導入します。これは、Maven や Gradle などのビルド ツールを使用して構成できます。
-
データ ソースの構成: MyBatis 構成ファイルで、データベース URL、ユーザー名、パスワードなどを含むデータベースとの接続情報を構成します。
-
マッピング ファイルの定義: MyBatis はマッピング ファイルを使用して、Java オブジェクトをデータベース テーブルにマップします。マッピングファイルでは、SQL文とパラメータ間のマッピング関係を定義します。
-
エンティティ クラスを作成する: データベース テーブルに対応するエンティティ クラスを作成し、アノテーションまたは XML を使用してフィールドとのマッピング関係を構成します。
-
DAO インターフェイスを作成します。永続化操作のインターフェイスを定義し、そのインターフェイスで実行する必要があるデータベース操作を宣言します。
-
DAO マッピングの構成: MyBatis 構成ファイルで、DAO インターフェースのマッピング関係を構成し、インターフェースをマッピング ファイルにバインドします。
-
SqlSession の取得: SqlSessionFactory を通じて SqlSession オブジェクトを取得します。SqlSession は MyBatis のコア クラスであり、SQL ステートメントの実行に使用されます。
-
データベース操作を実行する: SqlSession オブジェクトを通じて DAO インターフェイスのメソッドを呼び出し、挿入、クエリ、更新、削除などのデータベース操作を実行します。
-
リソースを解放する: 操作が完了したら、SqlSession を閉じます。
MyBatis は、シンプルな構成と少量のコードの記述により、Java プログラムとデータベース間の対話を簡単かつ柔軟にします。MyBatis を使い始めるには、上記の基本的な手順を理解し、MyBatis の中心的な概念と使用法を学習して習得する必要があります。このまとめがお役に立てば幸いです。