Spring Boot の MyBatis とは何か、およびその使用方法
序章
MyBatis は、SQL クエリをオブジェクトにマップし、CRUD 操作を実行するための使いやすい API を提供する人気のある Java 永続性フレームワークです。Spring Boot は MyBatis と統合できるため、簡素化された構成と自動構成が提供され、MyBatis の使用が容易になります。
この記事では、MyBatis の構成および使用方法、一般的な CRUD 操作に MyBatis を使用する方法など、Spring Boot での MyBatis について紹介します。同時に、MyBatis アノテーションと XML 構成ファイルを使用して SQL クエリを記述する方法も紹介します。
MyBatis を構成する
pom.xml
Spring Boot で MyBatis を使用するには、次のようにファイルに MyBatis と MyBatis-Spring の依存関係を追加する必要があります。
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
次に、データベース接続情報と MyBatis 構成情報を構成する必要があります。application.properties
次のようにファイル内でデータベース接続情報を指定できます。
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=123456
このファイルではapplication.properties
、次のように MyBatis の構成情報を指定することもできます。
mybatis.config-location=classpath:mybatis-config.xml
上記の構成では、MyBatis 構成ファイルのパスを として指定しましたclasspath:mybatis-config.xml
。MyBatis 設定ファイルでは、キャッシュを有効にするかどうか、遅延読み込みを有効にするかどうかなど、いくつかの MyBatis グローバル設定を定義できます。
MyBatisの基本操作
MyBatis を構成したら、データベース操作に MyBatis の使用を開始できます。MyBatis は、SQL クエリを実行する 2 つの方法、XML 設定ファイルと注釈を提供します。次の例では、これら 2 つのメソッドを使用して CRUD 操作を実行する方法を示します。
XML 構成ファイルを使用して CRUD 操作を実行する
まず、データベース内のレコードを表すための Plain Old Java Object (POJO) クラスを作成する必要があります。この例では、User
次のようにクラスを使用してユーザー情報を表します。
public class User {
private Long id;
private String name;
private Integer age;
// getters and setters
}
次に、SQL クエリとマッピングを定義する XML 構成ファイルを作成する必要があります。UserMapper.xml
この例では、次のように、いくつかの基本的な SQL クエリとマッピング関係を定義するファイルを作成します。
<?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.example.mapper.UserMapper">
<resultMap id="userMap" type="User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<select id="getUserById" resultMap="userMap">
SELECT * FROM user WHERE id = #{id}
</select>
<select id="getAllUsers" resultMap="userMap">
SELECT * FROM user
</select>
<insert id="insertUser">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
<update id="updateUserById">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteUserById">
DELETE FROM user WHERE id = #{id}
</delete>
</xml>
上記の XML 構成ファイルでは、クエリ結果をオブジェクトにマップするためのUserMapper
名前空間と要素を定義しました。次に、いくつかの SQL クエリとマッピング関係 ( 、、、など) を定義しました。これらの SQL クエリは、MyBatis API を通じて呼び出して、対応する操作を実行できます。resultMap
User
getUserById
getAllUsers
insertUser
updateUserById
deleteUserById
次に、データベースにアクセスするための API を定義するための Mapper インターフェイスを作成する必要があります。UserMapper
この例では、次のように、上記の SQL クエリに対応するメソッドを含むインターフェイスを作成します。
public interface UserMapper {
User getUserById(Long id);
List<User> getAllUsers();
void insertUser(User user);
void updateUserById(User user);
void deleteUserById(Long id);
}
上記の Mapper インターフェイスでは、上記の SQL クエリに対応する 5 つのメソッドを定義しました。これらのメソッドの名前とパラメータのタイプは、XML 構成ファイル内の SQL クエリに対応している必要があります。
最後に、サービス層でマッパー インターフェイスを呼び出して、CRUD 操作を実行できます。簡単な例を次に示します。
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
return userMapper.getUserById(id);
}
public List<User> getAllUsers() {
return userMapper.getAllUsers();
}
public void insertUser(User user) {
userMapper.insertUser(user);
}
public void updateUserById(User user) {
userMapper.updateUserById(user);
}
public void deleteUserById(Long id) {
userMapper.deleteUserById(id);
}
}
上記のサービスでは、UserMapper
インターフェイスを挿入し、対応するメソッドを呼び出して CRUD 操作を実行します。
注釈を使用して CRUD 操作を実行する
XML 設定ファイルに加えて、MyBatis は SQL クエリを定義するための注釈の使用もサポートしています。注釈を使用して SQL クエリを定義する例を次に示します。
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(Long id);
@Select("SELECT * FROM user")
List<User> getAllUsers();
@Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")
void insertUser(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
void updateUserById(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
void deleteUserById(Long id);
}
上記のコードでは、注釈を使用して SQL クエリを定義し、@Mapper
この注釈を使用してこのインターフェイスを MyBatis の Mapper インターフェイスとしてマークします。これらの SQL クエリは、インターフェイスのメソッド呼び出しを通じて直接実行できます。
注釈を使用して SQL クエリを定義すると、コードがより簡潔で読みやすくなりますが、XML 構成ファイルと比較すると、注釈は保守性が低く、クエリ ステートメントを再利用するのが困難です。
要約する
この記事では、MyBatis を Spring Boot に統合する方法を紹介し、XML 構成ファイルとアノテーションを使用して CRUD 操作を実行する方法を示しました。MyBatis は、SQL クエリをオブジェクトにマップし、CRUD 操作を実行するための使いやすい API を提供する人気のある Java 永続性フレームワークです。Spring Boot の自動構成と簡素化された構成により、MyBatis の使用がより簡単かつ便利になります。MyBatis を使用すると、データベース操作がよりシンプルかつ効率的になり、コードがより読みやすく、保守しやすくなります。