Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

Spring BootとMyBatisを使って、データベースから複数のレコードを選択(select)し、処理する方法

皆さんこんにちは!システム開発の中で、データベースから複数件のデータを取得し、それを効率よく処理することは非常に重要なスキルです。今回は、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マッピングを組み合わせることで、より高度なデータ操作も簡単に実現可能です。ぜひこの方法を活用して、自分のプロジェクトでも効率的なデータベース操作を行ってみてください!

それでは、また次回の記事でお会いしましょう!