如何在不列出所有属性的情况下通过基于注释的mybatis将对象(超过10个属性)插入mysql
How to insert an object(more than 10 properties) into mysql via mybatis based on annotation without list all properties
我想通过注解通过mybatis向mysql中插入一个超过10个属性的对象。但是我必须列出所有属性,太不方便了。我想知道是否有一些方法可以轻松插入对象而无需通过 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);
开箱即用的 MyBatis(至少版本 3)是不可能的。
MyBatis 在从数据库读取数据时具有自动映射功能,但没有在插入时自动映射字段的选项。
原因是 MyBatis 非常 SQL 为中心,您需要手动编写 SQL。 SQL select 语句 (select * from table
) 中可能有隐式字段,因此在这种情况下会自动映射到 POJO,但更新或插入中不可能有隐式字段,因此没有自动映射。
MyBatis 可以扩展的原因。例如,您可以将 @InsertProvider
/@UpdateProvider
与 sql 生成器一起使用,该生成器使用反射生成 sql 来获取对象字段。
我想通过注解通过mybatis向mysql中插入一个超过10个属性的对象。但是我必须列出所有属性,太不方便了。我想知道是否有一些方法可以轻松插入对象而无需通过 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);
开箱即用的 MyBatis(至少版本 3)是不可能的。
MyBatis 在从数据库读取数据时具有自动映射功能,但没有在插入时自动映射字段的选项。
原因是 MyBatis 非常 SQL 为中心,您需要手动编写 SQL。 SQL select 语句 (select * from table
) 中可能有隐式字段,因此在这种情况下会自动映射到 POJO,但更新或插入中不可能有隐式字段,因此没有自动映射。
MyBatis 可以扩展的原因。例如,您可以将 @InsertProvider
/@UpdateProvider
与 sql 生成器一起使用,该生成器使用反射生成 sql 来获取对象字段。