我在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中运行?那难道不会那么难吗?
答案 0 :(得分:0)
我在这里找到了适合你的东西
正如它所说,你必须创建一个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无法做到这一点,它只能通过参数映射来实现,但由于我已经准备好了很多地图,并且每个查询都需要修改,我会寻找其他解决方案。