2010-09-24 986 views

回答

2

这不是一个典型的要求(99.99%的应用程序使用iBatis或任何ORM知道数据库架构)。 iBatis是一个SQL映射器,您必须自己编写SQL查询。并没有标准的SQL查询(AFAIK),可以给你一个表中的列数。

我只能建议两种方法:

  1. 做一个SQL查询从目录表中选择。这是了解数据库元数据的正常方式。但这取决于您的特定数据库引擎。这与iBatis无关。

  2. QUICK和脏:做一个临时查询SELECT * FROM MYTABLE LIMIT 1(用你的数据库模拟替代LIMIT),通过HashMap映射到iBatis,并在你的DAO中计算键的数量。

+0

存在大量密切相关的表格的情况,其中所述表格共享5列,但具有基于特定表格而变化的附加列。有点像数据库中的强制继承情况。不愉快的工作,但我在几个案例中看到它。为此,我非常赞同方法2。相当强大的方法。我只想澄清一下你想要一个HashMap的集合,因为每个HashMap都代表一个列。 – demongolem 2012-02-09 15:30:49

0

对于Mybatis:您需要使用resultType而不是resultmap。 resultType必须是返回集合数据类型,通过知道集合的大小,您可以得到否。如果你使用HashMap,你可以在键中获得列名。