2

注釈に基づいて、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);
4

1 に答える 1

4

MyBatis (少なくともバージョン 3) ではそのままでは使用できません。

MyBatis には、データベースからデータを読み取るときに自動マッピングがありますが、挿入時にフィールドを自動的にマップするオプションはありません。

これは、MyBatis が非常に SQL 中心であり、手動で SQL を記述する必要があるためです。SQL select ステートメント ( select * from table) に暗黙的なフィールドを含めることができるため、この場合は POJO への自動マッピングがありますが、更新または挿入に暗黙的なフィールドを含めることはできないため、自動マッピングはありません。

MyBatis は原因を拡張することができます。たとえば、リフレクションを使用して SQL を生成する SQL ジェネレーターで@InsertProvider/を使用して、オブジェクト フィールドを取得できます。@UpdateProvider

于 2015-10-30T15:04:14.197 に答える