この記事の一部は機械翻訳を使ってるよ
MyBatis シリーズ
インストールと開始方法: この記事
使い方: https://blog.yexca.net/ja/archives/216
MyBatis は JDBC 開発を簡素化する優れた永続層フレームワークです。
MySQL インストール (Windows)
ダウンロード: https://dev.mysql.com/downloads/mysql/
ZIP Archive をダウンロード
解凍し、環境変数 MYSQL_HOME
PATH パス %MYSQL_HOME%\bin
を設定します。
管理者権限で cmd を開き、mysql
と入力して、設定が成功したかどうかを確認します。
MySQL を初期化する
コマンドを入力してください
mysqld --initialize-insecure
しばらく待つと、MySQL ディレクトリに data
フォルダが生成されます。
MySQL サービスを登録する
コマンド
mysqld -install
MySQL サービスを開始する
コマンド
# mysqlサービスを開始する
net start mysql
# mysqlサービスを停止する
net stop mysql
root パスワードを変える
コマンド
mysqladmin -u root password 1234
ログインパラメータ
mysql -u ユーザー名 -p パスワード -h 接続するMySQLサーバーのIPアドレス (デフォルト127.0.0.1) -P ポート番号 (デフォルト 3306)
# 例えば
mysql -u root -p
# 実行後、パスワードの入力を求められます
入門例
まず、SpringBoot プロジェクトを作成し、依存関係「MyBatis Framework」と「MySQL Driver」を選択します。
- データベース
create database mybatis;
use mybatis;
create table user(
id int unsigned primary key auto_increment comment 'ID',
name varchar(100) comment '名前',
age tinyint unsigned comment '年齢',
gender tinyint unsigned comment '性別, 1:男, 2:女',
phone varchar(11) comment '電話番号'
) comment 'ユーザーテーブル';
insert into user(id, name, age, gender, phone) VALUES (null,'白眉鹰王',55,'1','18800000000');
insert into user(id, name, age, gender, phone) VALUES (null,'金毛狮王',45,'1','18800000001');
insert into user(id, name, age, gender, phone) VALUES (null,'青翼蝠王',38,'1','18800000002');
insert into user(id, name, age, gender, phone) VALUES (null,'紫衫龙王',42,'2','18800000003');
insert into user(id, name, age, gender, phone) VALUES (null,'光明左使',37,'1','18800000004');
insert into user(id, name, age, gender, phone) VALUES (null,'光明右使',48,'1','18800000005');
- application.properties
# データベース接続情報を構成する
# ドライバークラス名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# データベース接続URL
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
# データベースに接続するためのユーザー名
spring.datasource.username=root
# データベースに接続するためのパスワード
spring.datasource.password=1234
- User クラス
public class User {
private Integer id;
private String name;
private short age;
private short gender;
private String phone;
public User() {
}
public User(Integer id, String name, short age, short gender, String phone) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public short getAge() {
return age;
}
public void setAge(short age) {
this.age = age;
}
public short getGender() {
return gender;
}
public void setGender(short gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", phone='" + phone + '\'' +
'}';
}
}
- UserMapper インタフェース
@Mapper // 実行時に、インターフェースの実装クラスオブジェクト(プロキシオブジェクト)が自動的に生成され、管理のために IOC コンテナに引き渡されます。
public interface UserMapper {
// ここではアノテーションを使用してSQL文を記述します
@Select("select * from user")
public List<User> list();
}
- テストクラス
@SpringBootTest
class MybatisStartApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
List<User> list = userMapper.list();
list.forEach(System.out::println);
}
}
データベース接続プール
データベース接続プールは、データベース接続 (Connection) の割り当てと管理を担当するコンテナです。
これにより、アプリケーションは新しいデータベース接続を確立する代わりに、既存のデータベース接続を再利用できます。
アイドル時間が最大アイドル時間を超える接続を解放して、接続の解放の失敗によるデータベース接続の喪失を回避します。
利点: リソースの再利用とシステム応答速度の向上
公式標準インターフェース: DataSource
一般的な製品: Hikari (SpringBoot デフォルト)、Druid
Lombok
上記の例では、User クラスはいくつかの属性のみを定義していますが、多くのメソッドが必要なため、コードが肥大化しています。この目的には、Lombok を使用できます。
Lombok は、アノテーションを通じてコンストラクター、getter/setter、equals、hashcode、toString などのメソッドを自動的に生成し、ログ変数を自動的に生成して Java 開発を簡素化し、効率を向上させる実用的な Java クラス ライブラリです。
注釈 | 効果 |
---|---|
@Getter/@Setter | すべてのプロパティに get/set メソッドを提供する |
@ToString | クラスの読みやすい toString メソッドを自動的に生成します |
@EqualsAndHashCode | クラスが所有する非静的フィールドに基づいて、equals メソッドと hashCode メソッドを自動的にオーバーライドします。 |
@Data | より包括的なコード生成機能を提供します(@Getter+@Setter+@ToString +@EqualsAndHashCode) |
@NoArgsConstructor | エンティティクラスのパラメータなしのコンストラクタメソッドを生成する |
@AllArgsConstructor | static 変更フィールドに加えて、エンティティ クラスのパラメータを持つコンストラクタ メソッドを生成します。 |
Lombok の導入
依存関係を導入します。バージョン番号は不要で、SpringBoot によって設定されます。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
User クラス
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private short age;
private short gender;
private String phone;
}
Lombok はコンパイル時に対応する Java コードを自動的に生成します。Lombok を使用するにはプラグインをインストールする必要がありますが、IDEA ではデフォルトでインストールされています。