Java

MyBatisでレコードを物理削除(DELETE文)する方法

MyBatisでDELETE文を実行する方法

MyBatisでDELETE文を使いレコードを物理削除する方法を紹介します。

SQL文(XMLファイル)

MyBatisのSQL文(XMLファイル)は次のとおりで、<delete>~</delete>内にDELETE文を書くことができます。

[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.dao.UserInfoMapper">

    <!-- 論理削除 -->
    <delete id="delete">
        DELETE FROM userinfo WHERE id = #{id}
    </delete>
    
</mapper>

Mapperクラス

MyBatisのMapperクラスは次のとおり。

[Mapperクラス]

package com.example.demo.dao;

import org.apache.ibatis.annotations.Mapper;

/**
 * ユーザー情報 Mapper
 */
@Mapper
public interface UserInfoMapper {

    /**
     * ユーザー情報の物理削除
     * @param id ID
     */
    void delete(Long id);
}

 

今回の例ではXMLファイルを使いSQL文を実行していますが、XMLファイルは利用せず@DeleteアノテーションでMapperクラスに直接SQL文を書くこともできます。

package com.example.demo.dao;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;

/**
 * ユーザー情報 Mapper
 */
@Mapper
public interface UserInfoMapper {

    /**
     * ユーザー情報の物理削除
     * @param id ID
     */
    @Delete("DELETE FROM userinfo WHERE id = #{id}")
    void delete(Long id);
}