我即将使用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可以用这种方式读取值。出于某些实际原因,我想避免这种方法,也许有人有更好的想法?感谢。
答案 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})