使用myBatis与动态表名和对象

时间:2014-02-08 20:17:19

标签: java mybatis

我即将使用myBatis创建动态SQL插入,其中表名和包含参数的对象不同。像这样:

INSERT INTO ${tablename} (column1, column2) VALUES (#{column1}, #{column2})

接口方法是:

@Insert(CREATE)
@Options(useGeneratedKeys = true, keyProperty = "id", flushCache = true)
public int write(String tablename, Object object) throws Exception;

Object保存字段值的位置:

class Object {
  int id;
  String column1;
  String column2;

  getters, setters...
}

不幸的是我无法找到如何做到这一点,我找到的最好和最有效的方法是当表名是Object的属性时,myBatis可以用这种方式读取值。出于某些实际原因,我想避免这种方法,也许有人有更好的想法?感谢。

1 个答案:

答案 0 :(得分:3)

使用@Param这样的注释

@Insert(CREATE)
@Options(useGeneratedKeys = true, keyProperty = "object.id", flushCache = true)
public int write(@Param("tablename") String tablename,
                 @Param("object") Object object) throws Exception;

和查询

INSERT INTO ${tablename} (column1, column2) VALUES (#{object.column1}, #{object.column2})