mybatis动态增加参数

苍之涛 发布于 2017/05/10 18:27
阅读 610
收藏 0

需求如下,在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();
}

我现在这样执行,会报错,说参数个数不匹配,请我有什么办法可以解决吗?

加载中
返回顶部
顶部