如何在iBatis中映射List <string>?

Bra*_*don 5 c# mapping ibatis.net

我有这样的课

public SomeClass
{
   private List<string> _strings = new List<string>();

   public IEnumerable<string> Strings
   {
      {  get return _strings; }
   }
}
Run Code Online (Sandbox Code Playgroud)

我如何为_strings做映射?

我试过这个,但它抱怨没有找到List typehandler,如果我将它作为一个对象映射它就不会抱怨.

<result property="_strings" column="value" />
Run Code Online (Sandbox Code Playgroud)

所以我搜索谷歌并发现了这个解决方法(最初是针对Java问题,不知道它是否可以在C#中工作)

<result property="_strings" resultMapping="someMapping.StringList"/>

<resultMap id="StringList" class="System.String">
  <result property="" column="Value"/>
</resultMap>
Run Code Online (Sandbox Code Playgroud)

这至少让测试运行,它返回我的对象​​的其余部分,我的列表具有正确的条目数,除了它们都是空白的.

我认为问题是属性属性是空白的,但我不确定是什么意思去那里.(我也尝试使用'价值',但这也不起作用).这似乎应该更简单,我只是忽略了一些明显的东西.

谢谢.

use*_*943 5

使用IBatis的自动结果映射.这是Java中的解决方案,您可以轻松映射到C#.这是你的sql map:

<sqlMap namespace="Users">
<select id="names" resultClass="java.lang.String">
        select first_name as firstName from user
</select>
<sqlMap>

然后你可以这样称呼它:

List<String> userNames = (List<String>)sqlMap.queryForList("Users.names");

因此,您不必创建具有一个属性的自定义类型.


Bra*_*don 0

由于没有找到解决方案,我只是采用了一种我并不特别自豪的方法。

我映射了一个除了字符串值之外没有其他属性的类。

public class StringValue
{
    public String Name { get; set; }
}

<resultMap id="StringList" class="StringValue" >
  <result property="Name" column="Value"/>
</resultMap>
Run Code Online (Sandbox Code Playgroud)

iBatis 似乎对此没有问题,只是映射到字符串集合。