ORM仕様


1. [必須] テーブル クエリでは、クエリのフィールド リストとして * を使用しないでください。どのフィールドが必須であるかを明確に記述する必要があります。

説明: 1) クエリ アナライザーの解析コストを増やします。 2) フィールドの追加または削除は、resultMap 構成と矛盾する可能性があります。


2. [必須] POJO クラスのブール属性は is で追加できず、データベース フィールドは is _ で追加する必要があります。 ## する必要があります。 # マッピングの resultMap でフィールドと属性間の接続を行います。

注: POJOクラスの定義とデータベースフィールドの定義を参照し、sql.xmlにマッピングを追加する必要があります。


3. [必須] return パラメーターとして resultClass を使用しないでください。すべてのクラス属性名がデータベース フィールドに 1 対 1 で対応する場合でも、それらは依然として一致する必要があります。

定義; 逆に、すべてのテーブルには対応するテーブルが必要です。

説明: メンテナンスを容易にするために、フィールドを DO クラスから分離するようにマッピング関係を構成します。


4. [必須] XML 設定でのパラメーターの使用に注意してください: #{}、# param # ${} は使用しないでください。このメソッドは SQL インジェクションを発生しやすいです。


5. [必須] iBATIS に付属の queryForList(StringstatementName, int start, int size) は推奨されません## # 使用。

説明:

実装方法は、データベース内のstatementNameに対応するSQL文のレコードをすべて取得し、subListでstartとsizeのサブセットを取得することです、この理由によりオンライン OOM が発生しました。

肯定的な例:

導入 #start#, #size#

Map<String, Object> map = new HashMap<String, Object>();
map.put("start", start);
map.put("size", size);


6. 【必須】ではありませんHashMap と Hashtable をクエリ結果セットの出力として直接使用できます。


#7. [必須] データ テーブル レコードを更新するときは、レコードの対応する gmt_modified フィールドの値も現在時刻に更新する必要があります。


8. [推奨事項] 大規模で包括的なデータ更新インターフェイスは作成せず、独自のターゲット更新セグメントであるかどうかに関係なく、POJO クラスとして渡します。全更新テーブルセット c1=value1,c2=value2,c3=value3; これは誤りです。 SQL

を実行するときは、未変更のフィールドを更新しないようにしてください。第一に、エラーが発生しやすくなり、第二に、非効率になり、第三に、binlog によりストレージが増加します。


9. [参考] @ Transactional トランザクションを乱用しないでください。トランザクションはデータベースの QPS に影響します。また、トランザクションが使用される場合は、キャッシュ ロールバック、検索エンジンのロールバック、メッセージ補正、統計補正などのさまざまなロールバック ソリューションを考慮する必要があります。

10. [参考] < isEqual > の CompareValue は、属性値 (通常は数値) と比較される定数であり、等しいことを意味する場合、 にはこの条件が伴うことを意味します; < isNotEmpty > ; は空ではなく、null の場合は実行されないことを意味します。< isNotNull > は、null 値でない場合に実行されることを意味します値