現代のWebアプリケーション開発において、効率的なデータアクセス層の実装は不可欠です。Spring BootとMyBatis-Plusの組み合わせは、開発生産性とシステム安定性を両立させる強力なソリューションです。
Spring Bootの主要機能 依存関係に基づく自動設定機能は、プロジェクト構成を大幅に簡素化します。組み込みTomcat/Jettyサーバーにより、外部アプリケーションサーバーの依存を排除可能です。スターターディペンデンシーを通じたMaven設定の最適化、Actuatorを活用した実行時モニタリング、外部設定ファイルによる環境依存設定の分離など、開発フローを一貫して支援します。
MyBatis-Plusの強化ポイント Active Recordパターンのサポートにより、オブジェクト指向的なデータ操作が可能になります。データベーススキーマから自動生成されるエンティティクラスやMapperインターフェースは、手作業によるコーディングを削減します。物理・論理分頁機能やSQL性能解析ツール、グローバル設定による共通ルールの適用など、データ層開発の生産性を飛躍的に向上させます。
プロジェクト構築の実践例 Mavenプロジェクトの初期化には、Spring Initializrを利用した標準的手法が推奨されます。依存関係として「Spring Web」と「MyBatis-Plus」を追加し、基本構造を生成します。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
</dependencies>
設定ファイルの最適化 YAML形式の設定ファイルでは、明確な階層構造を活用します。例えばデータベース接続設定は以下のように記述されます。
spring:
datasource:
url: jdbc:mysql://localhost:3306/sample_db
username: root
password: securepass
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
プロパティファイルを使用する場合、同様の設定を次のように表現します。
spring.datasource.url=jdbc:mysql://localhost:3306/sample_db
spring.datasource.username=root
spring.datasource.password=securepass
mybatis-plus.configuration.map-underscore-to-camel-case=true
データベース接続プールの実装 従来のJDBC接続方式では、毎回新しい接続を生成するためリソース消費が激しくなります。Druid接続プールを導入することで、接続の再利用と監視機能を実現します。pom.xmlに追加する依存関係は以下の通りです。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
YAML設定例:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
MyBatis-Plusの基本実装 エンティティクラスとMapperインターフェースの実装例です。
package example.data.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class Member {
@TableId(type = IdType.AUTO)
private Long userId;
private String loginId;
private String password;
private String phoneNumber;
private Double balance;
}
package example.data.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import example.data.entity.Member;
public interface MemberRepository extends BaseMapper<Member> {
}
単体テストでは、基本CRUD操作を確認できます。
package example.data.mapper;
import example.data.entity.Member;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.time.LocalDateTime;
@SpringBootTest
class MemberRepositoryTest {
@Autowired
private MemberRepository memberRepository;
@Test
void saveNewMember() {
Member member = new Member();
member.setLoginId("taro_yamada");
member.setPassword("secure_password_123");
member.setPhoneNumber("09012345678");
member.setBalance(15000.0);
member.setCreatedAt(LocalDateTime.now());
memberRepository.insert(member);
}
}
多環境設定の実装 開発環境と本番環境を分離するため、プロファイル別設定ファイルを作成します。
application-dev.yml:
spring:
datasource:
url: jdbc:mysql://dev-db:3306/dev_db
application-prod.yml:
spring:
datasource:
url: jdbc:mysql://prod-db:3306/prod_db
起動時にプロファイルを指定します。
java -jar app.jar --spring.profiles.active=prod
コード生成ツールの活用 MyBatis-Plusのコードジェネレーターを用いて、データベーススキーマから一括生成が可能です。
public class CodeGenerator {
public static void main(String[] args) {
AutoGenerator generator = new AutoGenerator();
generator.setGlobalConfig(new GlobalConfig()
.setOutputDir(System.getProperty("user.dir") + "/src/main/java")
.setAuthor("System")
.setOpen(false));
// データソース設定など他の設定を追加
generator.execute();
}
}
このツールにより、エンティティ、Mapper、サービス層クラスを自動生成し、開発効率を最大化できます。