皆さんこんにちは!システム開発の中で、データベースから複数件のデータを取得し、それを効率よく処理することは非常に重要なスキルです。今回は、Spring BootとMyBatisを使って、データベースから複数のレコードを選択(select)し、処理する方法について詳しく解説していきます。
Spring BootとMyBatisの組み合わせは、非常に強力であり、特にデータベース操作に慣れていない方にとっても、直感的で使いやすいフレームワークです。今回のブログでは、コードを使いながら具体的に解説し、実行結果も確認しながら進めていきましょう。
Spring BootとMyBatisのセットアップ
まず、プロジェクトのセットアップから始めます。Mavenを使ったSpring Bootプロジェクトを作成し、MyBatisを導入します。pom.xml
に以下の依存関係を追加しましょう。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies>
これでSpring BootとMyBatis、そしてMySQLデータベースにアクセスするためのセットアップが完了しました。次に、データベースとの接続設定を行います。application.properties
に以下のように接続情報を記述します。
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.mapper-locations=classpath:mappers/*.xml
ここでは、ローカルのMySQLデータベースに接続する設定を行っています。
MyBatis Mapperの設定
次に、MyBatisでデータを複数件取得するためのMapperを定義します。まずは、UserMapper
インターフェースを作成します。
@Mapper public interface UserMapper { List<User> selectAllUsers(); }
このインターフェースは、データベースからユーザー情報を複数件取得するためのメソッドselectAllUsers
を定義しています。このメソッドに対応するSQLクエリを、UserMapper.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.example.demo.mapper.UserMapper"> <select id="selectAllUsers" resultType="com.example.demo.entity.User"> SELECT * FROM users; </select> </mapper>
このselectAllUsers
メソッドは、データベースのusers
テーブルから全てのユーザーデータを取得します。
エンティティクラスの作成
データベースのテーブルに対応するエンティティクラスUser
を作成します。このクラスは、users
テーブルの各カラムに対応するフィールドを持ちます。
public class User { private int id; private String name; private String email; // Getters and Setters public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
このクラスを使って、MyBatisがデータベースから取得したデータをJavaオブジェクトにマッピングします。
サービス層の実装
次に、データベースから取得したデータをアプリケーションで使うために、サービスクラスを作成します。
@Service public class UserService { @Autowired private UserMapper userMapper; public List<User> getAllUsers() { return userMapper.selectAllUsers(); } }
このサービスクラスでは、UserMapper
を利用してデータベースから全てのユーザーデータを取得するgetAllUsers
メソッドを提供しています。
コントローラの実装
最後に、Webリクエストを受け取って、ユーザー情報を表示するためのコントローラを作成します。
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping public List<User> getAllUsers() { return userService.getAllUsers(); } }
このコントローラでは、/users
のエンドポイントにアクセスすると、データベースから全てのユーザーデータがJSON形式で返されるように設定しています。
実行結果
では、実際にアプリケーションを起動してみましょう。Spring Bootアプリケーションを実行し、ブラウザでhttp://localhost:8080/users
にアクセスします。
$ mvn spring-boot:run
ブラウザ上で、以下のようなJSON形式のユーザー情報が表示されるはずです。
[ { "id": 1, "name": "John Doe", "email": "john@example.com" }, { "id": 2, "name": "Jane Smith", "email": "jane@example.com" } ]
これで、データベースから複数件のデータを取得し、それをWeb上で確認することができました!
まとめ
今回は、Spring BootとMyBatisを使って、データベースから複数件のデータを取得し、それを表示する方法について解説しました。初心者の方にとって、最初は設定が少し複雑に感じるかもしれませんが、一度流れを理解すれば非常に効率的にデータベース操作を行うことができます。
Spring Bootの強力な機能とMyBatisの柔軟なSQLマッピングを組み合わせることで、より高度なデータ操作も簡単に実現可能です。ぜひこの方法を活用して、自分のプロジェクトでも効率的なデータベース操作を行ってみてください!
それでは、また次回の記事でお会いしましょう!