.net iBatis XML映射器从应用程序获取变量

.net iBatis XML映射器从应用程序获取变量,.net,ibatis,.net,Ibatis,我有一个使用iBatis的网络应用程序,有许多sql脚本,只有一个参数。我想用另一个参数扩展所有这些参数,但几乎不可能重写所有参数类。我现在举个例子: <select id="SelectAllByActionIdaction" resultMap="ResultSelectaction" parameterClass="int"> select a.* from t_action a where a.actionid = #value# </select> g

我有一个使用iBatis的网络应用程序,有许多sql脚本,只有一个参数。我想用另一个参数扩展所有这些参数,但几乎不可能重写所有参数类。我现在举个例子:

<select id="SelectAllByActionIdaction" resultMap="ResultSelectaction" parameterClass="int">
  select a.* from t_action a
  where a.actionid = #value#
</select>

getCurrentUserID是一种我可以在应用程序中的任何地方调用的方法,我如何让它在iBatis中工作?没那么难吧?我在这里找到了一些东西给你

正如它所说,您必须创建一个映射对象并将其发送给iBATIS。在查询中,您必须使用

parameterClass="java.util.Map"
iBATIS可以使用键访问地图中的值。 你的情况是什么

Map<String, Object> parms = new HashMap<String, String>();
parms.put("value", "yourName");
parms.put("currentUserID", getCurrentUserID);

iBatis不可能做到这一点,只能通过参数映射做到这一点,但是,由于我有许多allready映射,并且每个查询都需要修改,因此我将寻找其他解决方案。

我猜您必须创建一个模型类来组合这两个值,并在ParameterClassing中引用该类,就像我说的,几乎不可能重写所有参数映射,因为现在有很多,我allready发现的解决方案,但这不是我想要的解决方案。查看文档后,似乎不可能做到我想要的。似乎是一个简单的功能,但很难为iBatis。
Map<String, Object> parms = new HashMap<String, String>();
parms.put("value", "yourName");
parms.put("currentUserID", getCurrentUserID);
select a.* from t_actie a
where a.actieid = #value#
and a.editUserID = #currentUserID#