首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iBATIS.NET可以与ICollection一起使用吗?

iBATIS.NET可以与ICollection一起使用吗?
EN

Stack Overflow用户
提问于 2009-03-03 13:37:14
回答 1查看 764关注 0票数 1

这个问题与我的另一个问题有关:Using iBATIS.NET with generic custom collection interfaces and Unity

问题似乎是,如果iBATIS.NET是一个自定义集合的具体实例,而不是一个接口,那么它只会填充一个自定义集合(即QueryForObject("Select_Foo"),它有一个自定义的栏集合)。有没有人知道这是不是iBATIS.NET的限制,或者有没有办法做到这一点?

谢谢,

保罗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-30 06:47:11

如果我没理解错的话,那么你想要完全控制iBatis映射到某个对象的方式。

您可以使用ITypeHandlerCallback来实现这一点。在"3.5.5.自定义类型处理程序“一节的PDF documentation中可以找到完整的描述。

我用DataTables做过类似的事情。您的实现可能如下所示:

代码语言:javascript
复制
class DataTableBuilder : ITypeHandlerCallback
{
    public object GetResult(IResultGetter getter)
    {
        IDataReader reader = getter.DataReader;

        // (A) define whatever type you want to

        // (B) read rows from DataReader and populate your type from (A)
        while (reader.Read())
        {
            // iterate over the columns of the current row
            for (int i = 0; i < reader.FieldCount; i++)
            {
               // populate your type from (A)
            }                    
        }
        return ...;   // return your type from (A)
    }

    // implement the other members of ITypeHandlerCallback
    // the implementation below actually worked for me
    public object NullValue { get { return null; } }
    public void SetParameter(IParameterSetter setter, object parameter) { }
    public object ValueOf(string s) { return s; }
}

最后要注意的是: iBatis可以很好地构建数据传输对象(DTO)。如果您尝试了上述方法,您可能已经转向了业务对象方法。对于iBatis,这可能会变得很痛苦。目前(嗯.由于缺乏时间,已经有几个月了)我正在评估NHibernate作为一种替代方案。我认为NHibernate处理业务对象方法比iBatis流畅得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/606415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档