1.開発環境
- IDE: IntelliJ IDEA 2021.2
- JDK:JDK11
- ビルドツール: Maven 3.8.1
- MySQLバージョン: MySQL 8.0
- Spring Boot:2.7.5
- MyBatis-Plus:3.5.3
2.データベースとテーブルの作成
テーブルの作成とデータの挿入
CREATE DATABASE `mybatis_plus_example` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `mybatis_plus_example`;
CREATE TABLE `employee` (
`id` bigint(20) NOT NULL COMMENT '主キーID',
`full_name` varchar(50) DEFAULT NULL COMMENT '氏名',
`department` varchar(30) DEFAULT NULL COMMENT '部署',
`position` varchar(30) DEFAULT NULL COMMENT '役職',
`salary` decimal(10,2) DEFAULT NULL COMMENT '給与',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO employee (id, full_name, department, position, salary) VALUES
(1, '田中太郎', '開発部', 'エンジニア', 500000.00),
(2, '佐藤花子', '営業部', '営業担当', 450000.00),
(3, '鈴木一郎', '人事部', '人事担当', 480000.00),
(4, '高橋美咲', '経理部', '経理担当', 420000.00),
(5, '伊藤健司', '開発部', 'リードエンジニア', 600000.00);
3.Spring Bootプロジェクトの作成
Spring Bootプロジェクトの作成とLombokプラグインのインストール
プロジェクトのディレクトリ構造は以下の通りです:
MavenプロジェクトをSpring Bootプロジェクトに変更するだけで、通常のMavenプロジェクトのpom.xmlファイルを修正する必要があります:
<?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.7.5</version>
</parent>
<groupId>com.example</groupId>
<artifactId>MyBatisPlusDemo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.コードの実装
application.ymlの設定
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus_example?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Tokyo
username: root
password: password123
jpa:
hibernate:
ddl-auto: none
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: ASSIGN_ID
注意:
- ドライバークラス(driver-class-name)
- Spring Boot 2.1以降(組み込みjdbc8ドライバー)では、ドライバークラスとして使用: driver-class-name: com.mysql.cj.jdbc.Driver
- それ以外の場合、テスト実行時にWARNメッセージが表示される可能性があります
- 接続URL(url)
- MySQL 8.0のURL: jdbc:mysql://localhost:3306/mybatis_plus_example?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Tokyo
- そうしないと、テスト実行時に以下のエラーが報告される可能性があります: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
起動クラスの作成
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
エンティティの追加
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("employee")
public class Employee {
private Long id;
private String fullName;
private String department;
private String position;
private Double salary;
}
Mapperの追加
package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.Employee;
import org.springframework.stereotype.Repository;
@Repository
public interface EmployeeMapper extends BaseMapper<Employee> {
}
テストの実行
package com.example.demo;
import com.example.demo.entity.Employee;
import com.example.demo.mapper.EmployeeMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class EmployeeServiceTest {
@Autowired
private EmployeeMapper employeeMapper;
@Test
public void testFindAllEmployees() {
List<Employee> employees = employeeMapper.selectList(null);
employees.forEach(System.out::println);
}
@Test
public void testFindEmployeeById() {
Employee employee = employeeMapper.selectById(2L);
System.out.println("ID 2の従業員: " + employee);
}
}
結果:
これらのログ情報の出力は、ymlファイルで以下のように設定されています:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
もちろん、ログ情報からSQLステートメントなども確認できます。