MyBatisで動的にテーブル名を置換する方法を教えてください。
動的SQLを使用して、MyBatisが動的にテーブル名を置き換える方法を提供しています。テーブル名を動的SQLを使用して置き換える手順は次のとおりです。
- SQLでネイティブに言い換えた文の1つのオプションのみが必要です。
<sql id="tableName">
my_table
</sql>
- {}
SELECT * FROM ${tableName}
- この sentence をネイティブに日本語で言い換えてみてください。1つの選択肢だけで結構です。
List<User> getUsersByTableName(@Param("tableName") String tableName);
- パラメータに応じてテーブル名変数を入れ替えるには、Mapper XMLファイルで動的SQLを使用します。例:
<select id="getUsersByTableName" resultType="User">
SELECT * FROM ${tableName}
</select>
- Mapperメソッド呼び出し時には、置換するテーブル名を引数で渡します。例:
List<User> users = userMapper.getUsersByTableName("my_table");
上記のステップに従うことで、動的なテーブル名の置換が実現します。実行時、MyBatis はテーブル名の変数を実際のテーブル名に置き換えます。動的 SQL を使用してテーブル名を置き換える場合、SQL インジェクションのリスクがある可能性があることに注意してください。渡されるテーブル名が信頼できることを確認する必要があります。