需求如下,在xml中定义了sql:
<select id="findAll" resultType="User" >
SELECT * from ${tableName} a
</select>
里面用到了变量tableName,但是我的mapper方法是无参的:
public List<T> findAll();
我不想加入参数,想通过mybatis的intercepter,动态获取表名,设置到变量里面去,
public Object intercept(Invocation invocation) throws Throwable {
Object[] args = invocation.getArgs();
List<Object> argList = new ArrayList<Object>();
argList.addAll(Arrays.asList(args));
Map<String, String> map = new HashMap<String, String>();
map.put("tableName", "jbf_user");
argList.add(1,map);
args = argList.toArray();
ReflectUtil.setField(invocation, "args", args);
return invocation.proceed();
}
我现在这样执行,会报错,说参数个数不匹配,请我有什么办法可以解决吗?
MyBatis