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

时间:2014-08-07 11:23:31

标签: .net ibatis

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

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

这很好用,但现在我想在查询上放置另一个变量。例如:

  select a.* from t_actie a
  where a.actieid = #value#
  and a.editUserID = #getCurrentUserID#

getCurrentUserID是一个我可以在我的应用程序中随处调用的方法,如何让它在iBatis中运行?那难道不会那么难吗?

2 个答案:

答案 0 :(得分:0)

我在这里找到了适合你的东西

Passing Multiple Argument

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

parameterClass="java.util.Map"

iBATIS可以使用keys访问地图中的值。 在你的情况下将是

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#

答案 1 :(得分:0)

iBatis无法做到这一点,它只能通过参数映射来实现,但由于我已经准备好了很多地图,并且每个查询都需要修改,我会寻找其他解决方案。