MyBatisでリストを文字列に変換する方法は何ですか。

MyBatisで、ListをStringに変換する方法は次のとおりです:

  1. OGNL式を使用する:List内の要素を文字列に結合するためにOGNL式を使用できます。例:
<foreach collection="list" item="item" separator=",">
  ${item}
</foreach>

ここでのリストは、List型のパラメータです。アイテムはリスト内の要素であり、セパレータは要素を繋ぐ分かれ目です。

  1. カスタム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に変換して使用することができます。

bannerAds