問題タブ [modelmapper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ModelMapper ライブラリは ArrayList や HashSet などのコレクションをサポートしていますか?
この質問は AutoMapper とは関係ありません。私の質問はJavaのModelMapperについてですが、評判が悪いため、modelmapperの新しいタグを作成できません。混乱させて申し訳ありません。
とにかく、私の質問は、modelmapperライブラリが arraylist や hashset などのコレクションをサポートするかどうかです。コレクションからコレクションへのマッピングをサポートしていないようです。本当ですか?
java - ModelMapper を使用した PropertyMap のカスケード
6 つの POJO クラス (3 つの DAO と 3 つの DTO) を考えてみましょう。
DAO: "A"、"B"、"C"
DTO: "One"、"Two"、"Three"
「A」には「B」のリストが含まれています。「B」には「C」のリストが含まれています。
「One」には「Two」のリストが含まれます。"Two" には "Three" のリストが含まれています。
「A」は「A2One」を介して「One」にマップされます。「B」は「B2Two」を介して「Two」にマップされます。「C」は「C2Three」を介して Three にマップされます。
B2Two と C2Three は、A2One と非常によく似たコードを持っています。
だからここに私の質問があります:
現在、「A」と「One」に含まれるリスト間の変換は、カスタム コンバーターを介して行われます (動作します) が、B2Two が実行するはずの同じ操作を繰り返しています (Bs を Twos にマップします)。
プロパティ マップが行っていることを単に再現するコンバーターを作成することなく、リストをマップするときにプロパティ マップ (A2One -> B2Two -> C2Three) をカスケードする方法はありますか?
代替案 1List, List
:正しいプロパティ/型マップに転送するジェネリックを使用してカスタム TypeMap を作成します。
代替案 2 : A2One では、リストに以下を使用します。
ListProvider が AbstractProvider を拡張し、新しい ArrayList() を返す場所
選択肢 3 : ???
何か案は?より複雑なマッピングの問題に関するドキュメントは Web サイトで非常に貧弱であり、必ずしも代替フレームワークを探しているわけではありません。代替案が提供される場合、簡単なリファクタリングを可能にする必要があります (したがって、Dozer と Orika は基本的に除外されます)。
前もって感謝します
更新: 執筆時点では、ModelMapper は基本的に機能せず、実際にはリストやマッピングのカスケードをサポートしていないため、リストにすることもできるすべてのオブジェクトに対してマップとコンバーターを作成する必要があります。
さらに、Orika には MapperBase を拡張することで、リファクタリングしやすいマッピングがあることがわかりました。さらに、Orika は個々の Bean と Bean のリストのマッピングを透過的に処理できます (両方の状況で単一のマッピング ルールを使用)。
更新 2 : Orika では、CustomMapper を使用してコレクションの双方向の深いネストされたマッピングを行うことができます。これにより、双方向マッピングの実装を作成し、それらを他のカスタム マッパーにカスケードできます。A2One は B2Two のインスタンスを保持し、「A」に含まれる「B」をマッピングするときにそれを透過的に使用します。
java - あるオブジェクトから別のオブジェクトに文字列プロパティのみをコピーする
私はドーザーで作業していましたが、ドーザーがサポートしていないと思われる特別なシナリオがありました。String、Ingeger、その他のプリミティブ型など、さまざまな型のプロパティを持つクラスがあるとします。今、このクラスから別のクラスに文字列プロパティのみをコピーしたいと思います。ここにサンプルコードがあります:(非常に簡単ですが、問題を適切に理解できます。)
今、私は次のような考えが欲しいです、
どのブルドーザーでも可能ですか?私はドーザーに精通しています。ただし、apache beanutil や ModelMapper などの他の API に対しては動作します。この技術のいずれかで自由に答えてください。
zend-framework - ZendフレームワークモデルとDoctrine2エンティティ
最近、ここで紹介した方法を使用して、Doctrine2をZFアプリに統合しました。
http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/
私はそれが機能する方法が本当に好きです、しかし私はこれが私のモデルとマッパーを持っていた方法にどのように影響するかについて少し混乱しています。
混乱を例で説明しましょう、
ZendCastで与えられた例のように、ユーザーエンティティと購入があるとしましょう
現在、Doctrineが使用するこれらのエンティティがあります
私が持っていた前に
application / models /のクラスでは、エンティティに作用する関数を記述していました(Fatモデルのシンコントローラーの原則)。たとえば、ユーザーにメールを送信する場合は、Application_Model_UserにsendMailという名前のメソッドを作成します。
/ library / ZC / Entity内のファイルにメソッドを追加できるかどうか、またはDoctrineがデータベースを管理するためにそれらのファイルを使用するため、それがまったく良い考えかどうかはわかりません。
むしろ別のモデルファイルがあり、複数のモデルで機能するマッパーファイルもありました。たとえば、すべての非アクティブなユーザーに電子メールを送信する場合は、メソッドemailInactiveUsersをApplication_Model_UserMapperに作成します。
私は今それをどのように行うでしょうか?
私も少しグーグルして、これを見つけました:
それは言う
データベースからモデルを非常に迅速に作成するDoctrine_Cliと呼ばれるスキャフォールディングツール
ただし、コマンド「generate-models-db」がscripts/doctrine.phpファイルに存在しません。これがDoctrineがバージョン2でサポートを停止したものなのかどうかはわかりません。
java - Bean プロパティのリストを使用した Bean のマッピングはモデル マッパーでサポートされていますか?
2 つの JavaBean 構造をマップしようとしています (ここでは簡略化):
さらに、パッケージ内に同じプロパティを持つ等しい Bean がありbar
、2 つの間のマッピングを次のように行います。
ここで、ソースfooContainer
には項目のリストが含まれており、その中にはプロパティが a にmessage
設定されているものと、プロパティ値として設定されてString
いるものがありnull
ます。
マッピングの結果で、のリストがリストにfoo.Item
正しくマッピングされているように見えbar.Item
、最初のmessage
プロパティも正しくマッピングされていることがわかりました。ただし、プロパティのnull
値を持つ最初のアイテムの後、ソース プロパティの内容に関係なく、後続のアイテムのmessage
すべてのプロパティ値がマップされます。message
null
デバッグで理由がわかりました: 宛先プロパティ値がnull
メッセージ プロパティ パスになると、MappingEngineImpl:207 で影付きとしてマークされ、MappingEngineImpl:142 の後続の項目では無視されます。
これは moddelmapper のバグですか、それとも Bean プロパティのリストのマッピングを有効にするために別の方法で modelmapper を構成する必要がありますか?
java - Jooq Result のカスタム コンバーター
実際にはfetchInto()
、結果をオブジェクトのリストに変換するために使用しています。
例えば:
Employee
pojo マッチング データベース テーブルは従業員です。
同様に、結合を使用してフェッチしているレコードをどのように変換できますか?
例えば:
Customer
pojoマッチングデータベーステーブルですcustomer
。
Employee
pojoマッチングデータベーステーブルですemployee
。
validation - ModelMapper、Orika、Dozer などの Bean マッパーを使用した検証プロパティ パスのマッピング
Bean マッパーを使用してビジネス モデルを DTO モデルに、またはその逆にマッピングする場合: プロパティ パスを変換する簡単な方法を提供するのはどれですか?
私のビジネスロジックが「person.street.number」が必須であると報告し、クライアントにこれを正しい方法、つまり「personDto.streetnumber」として伝えたいとしましょう。
すべての Bean マッパーがこの知識を持っていると確信していますが、この知識にアクセスする簡単な方法を提供しているのはどれですか?
この優れた Bean マッパーのリストに基づいて、ModelMapper と Orika が非常に魅力的に見える場合は、彼らの Web サイトをさらに読んでください。