Mybatisで値オブジェクト(DTO)とマッピングする方法
MyBatisで値オブジェクトを扱う方法について説明します。
1. クラスとテーブルの定義
まず、値オブジェクト(DTO)として使用するクラスと、それに対応するテーブルを定義します。
ここでは、test_userテーブルと、それに対応するTestUserクラスを例にします。
// TestUser.java public class TestUser { private Integer id; private String name; private String email; // getters and setters }
-- test_user テーブルの作成 CREATE TABLE test_user ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) );
2. マッパーXMLの設定
次に、MyBatisのマッパーXMLファイルで、TestUserクラスを使用してSQLを定義します。
test_userテーブルからデータを取得するためのselect文を設定します。
<!-- TestUserMapper.xml --> <mapper namespace="com.example.TestUserMapper"> <resultMap id="testUserResultMap" type="TestUser"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="email" column="email"/> </resultMap> <select id="selectUserById" parameterType="Integer" resultMap="testUserResultMap"> SELECT * FROM test_user WHERE id = #{id} </select> </mapper>
3. マッパーインターフェースの定義
次に、マッパーインターフェースを定義します。
これにより、マッパーXMLで定義したSQLを呼び出すことができます。
// TestUserMapper.java public interface TestUserMapper { TestUser selectUserById(Integer id); }
4. MyBatisの設定
最後に、MyBatisの設定を行い、SQLセッションを使ってデータベースにアクセスします。
// MyBatisConfig.java import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; public class MyBatisConfig { private static SqlSessionFactory sqlSessionFactory; static { String resource = "mybatis-config.xml"; InputStream inputStream = TestUserMapper.class.getClassLoader().getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
<!-- mybatis-config.xml --> <configuration> <mappers> <mapper resource="com/example/TestUserMapper.xml"/> </mappers> </configuration>
これで、TestUserクラスを値オブジェクトとして扱う準備が整いました。
TestUserMapperインターフェースのメソッドを使って、test_userテーブルからデータを取得できます。