答案 0 :(得分:0)
这是可能的。
定义一个用于保存输入的类,它将保存Select所需的三个属性,因此它们可能是:
如果你使用的是C#,它可能看起来像这样:
public class UserRetrievalParams
{
public String FirstName { get; set; }
public String LastName { get; set; }
public IList<String> UserNames { get; set; }
}
......或类似的东西。构造该对象的实例,并使用您的用户名填充列表。
然后将该对象作为参数传递给Ibatis,您可以像这样引用属性:
<select id="example" resultMap="yourMap" parameterClass="UserRetrievalParams">
select * from YourTable where
username in
<iterate property="UserNames" open="(" close=")" conjunction=",">
#UserNames[]:char#
</iterate>
and user_first_name=#FirstName:char#
and user_last_name=#LastName:char#
</select>
注意必须在两个地方引用UserNames列表属性的稍微反直觉的语法:在iterate属性中,再在iterate标记之间。
我在.Net 2及更高版本上使用Ibatis 1.6.2.0版成功使用此语法。
希望有所帮助。