mybatis动态sql列表中

mybatis dynamic sql list in

在mybatis中,我试图通过代码

生成动态sql
public String getData(@Param(value = "dataList") List<String> dataList) {

        return new SQL() {
            {
                SELECT("*");
                FROM("data_table");
                WHERE("data_id in (#{dataList})");
            }
        }.toString();
    }
}

但是这段代码不起作用。在生成的查询中,它只为列表提供一个问号(?)。

我怎样才能做到这一点?

您可以使用 XML.Mybatis 官方文档仅显示 xml 可以使用动态 sql.Code:

<select id="getData" resultType="">
    select * from data_table where data_id in
    <foreach item="item" collection="list" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

详情见http://www.mybatis.org/mybatis-3/dynamic-sql.html

StringBuilder sb = new StringBuilder("data_id in (");
for (int i = 0; i < ids.size(); i++) {
  if (i > 0) {
    sb.append(',');
  }
  sb.append("#{dataList[").append(i).append("]}");
}
sb.append(')');
WHERE(sb.toString());