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>
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());
在mybatis中,我试图通过代码
生成动态sqlpublic 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>
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());