MyBatisでリストを文字列に変換する方法は何ですか。
MyBatisで、ListをStringに変換する方法は次のとおりです:
- OGNL式を使用する:List内の要素を文字列に結合するためにOGNL式を使用できます。例:
<foreach collection="list" item="item" separator=",">
${item}
</foreach>
ここでのリストは、List型のパラメータです。アイテムはリスト内の要素であり、セパレータは要素を繋ぐ分かれ目です。
- カスタムTypeHandlerを使用すると、Listタイプのパラメータを処理するためのTypeHandlerをカスタマイズできます。例えば:
public class ListTypeHandler implements TypeHandler<List<String>> {
@Override
public void setParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, StringUtils.join(parameter, ","));
}
@Override
public List<String> getResult(ResultSet rs, String columnName) throws SQLException {
String value = rs.getString(columnName);
return Arrays.asList(value.split(","));
}
@Override
public List<String> getResult(ResultSet rs, int columnIndex) throws SQLException {
String value = rs.getString(columnIndex);
return Arrays.asList(value.split(","));
}
@Override
public List<String> getResult(CallableStatement cs, int columnIndex) throws SQLException {
String value = cs.getString(columnIndex);
return Arrays.asList(value.split(","));
}
}
その後、Mapperインターフェースのメソッドで@Paramアノテーションを使用して、パラメータのTypeHandlerを指定します。例えば、
void updateList(@Param("list") List<String> list);
使用時、TypeHandlerのsetParameterメソッドが自動的に呼び出され、リストを文字列に変換してSQLのパラメータとして使用されます。
MyBatisでListをStringに変換して使用することができます。