在MyBatis中,將List轉換為String可以使用以下方法:
<foreach collection="list" item="item" separator=",">
${item}
</foreach>
這里的list
是一個List類型的參數,item
是List中的元素,separator
是連接元素的分隔符。
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
方法將List轉換為String作為SQL的參數。
這樣就可以將List轉換為String在MyBatis中使用了。