0

我知道我们可以在子句语句中传递列表/字符串数组,如下面的代码

这里

请告诉我如何在 iBatis 中使用 IN 子句传递多个参数。

4

1 回答 1

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 上成功使用了这种语法。

希望有帮助。

于 2014-08-08T22:56:23.870 回答