java - Alibaba の開発マニュアルでクエリの受信クラスとしてマップが無効になっているのはなぜですか?
大家讲道理
大家讲道理 2017-05-27 17:41:05
0
8
1294

私は、プロジェクト内のクエリの受信オブジェクトとして List<Map<String,Object>> をよく使用します。これは便利であり、複数テーブルのクエリごとに DTO クラスを作成する必要がないことがわかります。

上記はクエリのみです。マップを DTO に適用した場合、VO にも同じ問題が発生しますか?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(8)
小葫芦

1. マップパラメータの数が多いとメンテナンスが困難になります。文字列形式でキーを識別するため、文字がプログラムされていないエラーが発生する可能性があります

2. マップをエンティティに変換します。これはリソースを消費します。あるいは、エンティティを変換せずに直接SQL層にマップを渡すことになりますが、null値の判定(このパラメータを渡すかどうか…)が必要になるため、パラメータの数が多すぎると多くの判定が必要になります。 (SQL効率が低下し、メンテナンスが容易ではありません)

3. エンティティクラスを作成するよりも、マップを作成してからパラメーター値を入力する方が時間がかかります (マップの数が少ない場合、作成時間の差は非常に小さいですが、マップの数が少ない場合、その差は非常に大きくなります)数が多いです)

4. パラメータの種類の制御。 SQL の文字列型ではないパラメータは数値に変換する必要があります。 。 。エラーは SQL に発生し、簡単に CC されます

5. オブジェクトに面し、SQL レイヤーをエンティティから分離し、結合を軽減します。そうしないとメンテナンスが面倒になります

いいねを押す +0
左手右手慢动作

2 つの側面があると思います:
1. オブジェクト指向の考え方
2. 結局のところ、クエリを使用するときは間違いを犯しやすいです [効率とは、map.get(key) と、map.put を指します]。まあ、それは本当に良くありません

すべて私が作りました、はは、大学の先生が私にそれについて言ったと思います。 。

いいねを押す +0
某草草

他人による共同開発やその後のメンテナンスには適さない

いいねを押す +0
我想大声告诉你

Map は型が安全ではありません

いいねを押す +0
过去多啦不再A梦

Map はクエリ パラメーターを使用します。メソッドの呼び出し元は、メソッド プロバイダーによって提供されるメソッド パラメーターにどのキーと値のペアおよびキーと値のペアのタイプを格納できるかを単純に知りません。map.put (key, value. ) はコンパイル段階では検出できません。QueryD を使用すると、パラメーターの型と制限を正確に定義できます (JSR 303 検証)

いいねを押す +0
仅有的幸福

私の理解が正しければ

データ クエリ オブジェクトは、dao クエリ メソッドの パラメータのカプセル化 を参照し、メソッドの戻り値を参照しません。これの利点は、コードが 可読性 高く、直接使用できることです。しかし、あなたのクエリはそれをまったくサポートしていませんが、ユーザーに確実に知らせるにはどうすればよいですか?map作为接口参数, 使用者想要确定具体的查询条件非常困难, 而且给外部接口调用的灵活性太高, 比如 使用者在map中增加一个x

dao の戻りパラメータは、ドキュメントの要件に従って do/dto.

を使用する必要があります。

いいねを押す +0
黄舟

これは主に、デバッグとメンテナンスの難しさが原因であるように感じられます。たとえば、キーのスペルミスは、クエリが実行されるまで報告されません。

いいねを押す +0
黄舟

マップの利点:

リーリー

Javabeans の利点をご覧ください:

リーリー

長所と短所を比較検討し、チーム開発と JavaBeans の方が優れている場合は、個人のプロジェクトは問題ではありません。
追加大歓迎です! ~

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート