SpringフレームワークとMyBatisを統合したSMプログラミングによるDAOレイヤーの開発
Spring フレームワークと MyBatis の統合において、SM プログラミング (Spring + MyBatis) は、一般的な DAO 層開発手法です。
以下は簡単な例です。
最初に、SpringフレームワークとMyBatisが正しく設定されていることを確認します。
DAOインターフェースを作成します: データアクセス操作のメソッドを宣言するためにDAOレイヤでインターフェースを定義します。たとえば、UserDaoインターフェースを作成します:
public interface UserDao {
User getUserById(int id);
List<User> getAllUsers();
void addUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
2. DAOインタフェース実装クラスの作成:上記したインターフェースを実装し、SQL文の実行にはMyBatisを使用します。例えば、UserDaoImplクラスを作成します。
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Override
public User getUserById(int id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.selectOne(“getUserById”, id);
}
}
@Override
public List<User> getAllUsers() {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.selectList(“getAllUsers”);
}
}
@Override
public void addUser(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.insert(“addUser”, user);
session.commit();
}
}
@Override
public void updateUser(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.update(“updateUser”, user);
session.commit();
}
}
@Override
public void deleteUser(int id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.delete(“deleteUser”, id);
session.commit();
}
}
}
3. MyBatisのMapperファイル配置:resourcesディレクトリ以下にDAOインターフェースと対応するMapper XMLファイル(例: UserMapper.xml)を作成し、SQL文を記述します。
<mapper namespace="com.example.dao.UserDao">
<select id=”getUserById” resultType=”com.example.entity.User”>
SELECT * FROM users WHERE id = #{id}
</select>
<select id=”getAllUsers” resultType=”com.example.entity.User”>
SELECT * FROM users
</select>
<insert id=”addUser” parameterType=”com.example.entity.User”>
INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>
<update id=”updateUser” parameterType=”com.example.entity.User”>
UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<delete id=”deleteUser” parameterType=”int”>
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
4. Spring Beanの設定: Springの設定ファイルで、`UserDaoImpl` を Bean として注入し、MyBatis の必要な設定を行います。
<bean id="userDao" class="com.example.dao.UserDaoImpl">
<property name=”sqlSessionFactory” ref=”sqlSessionFactory” />
</bean>
<bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean”>
<property name=”dataSource” ref=”dataSource” />
<property name=”mapperLocations” value=”classpath*:com/example/mappers/*.xml” />
</bean>
<bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<!– 设置数据库相关配置 –>
</bean>
上記の手順を経ることで、アプリケーションでUserDaoインタフェースの実装クラスを使用してデータベースへのアクセス操作を実施でき、SpringとMyBatisが統合され、トランザクション管理機能などが提供されます。