2

我想通过mybatis基于注解将一个属性超过10个的Object插入到mysql中。但是我必须列出所有属性,这太不方便了。我想知道是否有一些方法可以在不通过 mybatis 列出所有属性的情况下轻松插入对象。这是我的片段。非常感谢。

@Insert("insert into poi_shop(name,brand,tags,status,phone,mobile,business_time,address,city,lng,lat,business_type,attribute_json) values(#{name},#{brand},#{tags},#{status},#{phone},#{mobile},#{business_time},#{address},#{city},#{lng},#{lat},#{business_type},#{attribute_json})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
public Long insertPoiInfo(PoiBo poiBo);
4

1 回答 1

4

在 MyBatis(至少版本 3)中是不可能的。

MyBatis 在从数据库读取数据时具有自动映射功能,但没有在插入时自动映射字段的选项。

原因是 MyBatis 非常以 SQL 为中心,你需要手动编写 SQL。SQL select 语句 ( select * from table) 中可能有隐式字段,因此在这种情况下会自动映射到 POJO,但在 update 或 insert 中不可能有隐式字段,因此没有自动映射。

MyBatis 可以扩展原因。例如,您可以将@InsertProvider/@UpdateProvider与使用反射生成 sql 的 sql 生成器一起使用以获取对象字段。

于 2015-10-30T15:04:14.197 回答