クエリー(フィルター)作成の補助をするためのベースクラス [詳解]
#include <table.h>
公開型 | |
enum | eOptimize { none = 0, joinHasOneOrHasMany = 1, combineCondition = 2 } |
クエリーの実行時に行われる最適化条件をセットします。 [詳解] | |
公開メンバ関数 | |
queryBase () | |
queryBase (const queryBase &r) | |
virtual | ~queryBase () |
void | addField (const _TCHAR *name) |
void | addLogic (const _TCHAR *name, const _TCHAR *logic, const _TCHAR *value) |
void | addLogic (const _TCHAR *combine, const _TCHAR *name, const _TCHAR *logic, const _TCHAR *value) |
void | addSeekBookmark (bookmark_td &bm, ushort_td len, bool reset=false) |
void | addSeekKeyValue (const _TCHAR *value, bool reset=false) |
void | addSeekKeyValuePtr (const void *value, ushort_td len, short typeStr, bool reset=false) |
queryBase & | all () |
queryBase & | bookmarkAlso (bool v) |
void | clearSeekKeyValues () |
void | clearSelectFields () |
queryBase & | direction (table::eFindType v) |
table::eFindType | getDirection () const |
int | getJoinKeySize () const |
int | getLimit () const |
eOptimize | getOptimize () const |
int | getReject () const |
const _TCHAR * | getSelect (short index) const |
const _TCHAR * | getWhereToken (short index) const |
bool | isAll () const |
bool | isBookmarkAlso () const |
bool | isSeekByBookmarks () const |
bool | isStopAtLimit () const |
queryBase & | joinKeySize (int v) |
queryBase & | limit (int v) |
queryBase & | operator= (const queryBase &r) |
queryBase & | optimize (eOptimize v) |
queryBase & | queryString (const _TCHAR *str, bool autoEscape=false) |
queryBase & | reject (int v) |
void | release () |
void | reserveSeekKeyValuePtrSize (size_t v) |
void | reserveSeekKeyValueSize (size_t v) |
void | reset () |
void | reverseAliasName (const _TCHAR *alias, const _TCHAR *src) |
short | selectCount () const |
void | setWhereToken (short index, const _TCHAR *v) |
queryBase & | stopAtLimit (bool v) |
const _TCHAR * | toString () const |
short | whereTokens () const |
静的公開メンバ関数 | |
static queryBase * | create () |
限定公開メンバ関数 | |
const std::vector < std::_tstring > & | getSeekKeyValues () const |
const std::vector< keyValuePtr > & | getSeekValuesPtr () const |
const std::vector < std::_tstring > & | getSelects () const |
const std::vector < std::_tstring > & | getWheres () const |
クエリー(フィルター)作成の補助をするためのベースクラス
このクラスは、コンビニエンスC++APIで使用するためのベースクラスです。 通常のデータ操作で、このクラスを直接使用することはありません。
enum eOptimize |
クエリーの実行時に行われる最適化条件をセットします。
列挙値 | |
---|---|
none |
特に最適化を行いません。 |
joinHasOneOrHasMany |
activeTableのJoinは、Joinのキー値が同じレコードを検索し、重複している場合はスキップして、サーバーにリクエストする値の数を最小化します。 しかしながら、hasMany-JoinやJoinのキー値がすべてユニークである場合は、この機能は利用できないか不要なものです。¥n 事前に、不要であるとわかっている場合は、optimize()でjoinHasOneOrHasManyを指定します。 これを指定すると重複値の検索処理をバイパスしてより高速にJoinできます。 |
combineCondition |
隣あっている2つのフィールドの条件を連結し1つの条件にするオプティマイズを行うかどうかを指定します。 |
コンストラクタ
reject(1) limit(0) direction(table::findForword) optimize(false)を呼び出したと同じに初期化します。
|
virtual |
仮想デストラクタ
void addField | ( | const _TCHAR * | name | ) |
マッチしたレコードから抽出するフィールドを追加します。
void addLogic | ( | const _TCHAR * | name, |
const _TCHAR * | logic, | ||
const _TCHAR * | value | ||
) |
レコードの最初のマッチ条件を追加します。
また、addSeekKeyValue()によって指定したキー値があればそれをクリア(すべて削除)します。
void addLogic | ( | const _TCHAR * | combine, |
const _TCHAR * | name, | ||
const _TCHAR * | logic, | ||
const _TCHAR * | value | ||
) |
レコードの2番目以降のマッチ条件を追加します。
void addSeekBookmark | ( | bookmark_td & | bm, |
ushort_td | len, | ||
bool | reset = false |
||
) |
ブックマークによるレコード取得を複数まとめて行うオペレーション TD_KEY_SEEK_MULTI で使うブックマーク値を追加します。取得したいレコードの数分この関数を呼び出し てください。
resetにtrueを指定すると、既に追加されたブックマークを削除し、bmで指定された値を追加します また、addLogic()によって指定したマッチ条件があればそれをクリア(すべて削除)します。 TD_KEY_SEEK_MULTIオペレーションはマッチ条件を同時に指定することはできません。
void addSeekKeyValue | ( | const _TCHAR * | value, |
bool | reset = false |
||
) |
ユニークなキー値のレコード取得を複数まとめて行うオペレーション TD_KEY_SEEK_MULTI で使うキー値を追加します。このオペレーションではrejectCountは自動で1にセットされます。この値以外 は使用できません。
キーがマルチセグメントキーの場合は、セグメントの数だけaddSeekKeyValueを呼び出してください。 TD_KEY_SEEK_MULTIオペレーションを実行する前にaddSeekKeyValueを呼び出す回数は 取得するレコード数 × キーのセグメント数 になります。
resetにtrueを指定すると、既に追加されたキー値を削除し、valueで指定された値を追加します また、addLogic()によって指定したマッチ条件があればそれをクリア(すべて削除)します。 TD_KEY_SEEK_MULTIオペレーションはマッチ条件を同時に指定することはできません。
void addSeekKeyValuePtr | ( | const void * | value, |
ushort_td | len, | ||
short | typeStr, | ||
bool | reset = false |
||
) |
addSeekKeyValue() と同じ目的の関数ですが、引数が文字列でなくvoid*型のポインター を渡します。この関数は通常使用しません。特別に最適化されたactiveTableのために あります。
queryBase & all | ( | ) |
すべてのレコードにマッチさせるFilterにします。 また抽出するフィールドは全フィールドになります。
addField() addLogic() addSeekKeyValue() のいずれかを呼び出すとこの呼び出しは無効になります。
queryBase & bookmarkAlso | ( | bool | v | ) |
table::find() オペレーションの結果に各レコードのbookmarkを含めるどうかを指定します。
v | trueを指定するとbookmarkを含めます。 P.SQLの場合はfalseを指定してもbookmarkを除くことはできません。 falseが有効なのはtransactdのみです。 |
void clearSeekKeyValues | ( | ) |
addSeekKeyValue() で追加したキー値をクリア(すべて削除)します。
void clearSelectFields | ( | ) |
addField()で追加したフィールドをクリア(すべて削除)します。
|
static |
queryBaseオブジェクトを生成し返します。new演算子の代わりにこの関数にて生成するようにしてください。DLL内で実装されたnew演算子が使用されるようになります。また破棄は delete の代わりに release() を呼び出してください。引数の詳細は対応するコンストラクタを参照してください。
queryBase & direction | ( | table::eFindType | v | ) |
カレントレコードから検索する方向(前方または後方)を指定します。
table::eFindType getDirection | ( | ) | const |
direction() 設定された値を返します。
int getJoinKeySize | ( | ) | const |
joinKeySize() で指定されたキーの数を返します。
int getLimit | ( | ) | const |
limit() で指定された値を返します。
eOptimize getOptimize | ( | ) | const |
optimize() で指定された値を返します。
int getReject | ( | ) | const |
reject() で指定された値を返します。
|
protected |
addSeekKeyValue()によって追加されたキー値のリストを返します。
|
protected |
addSeekKeyValuePtr() によって追加されたキー値のリストを返します。
const _TCHAR * getSelect | ( | short | index | ) | const |
indexで指定された位置の addField() で設定されたフィールド名を返します。
|
protected |
addField()によって追加された抽出フィールドリストを返します。
|
protected |
addLogic()によって追加された抽出条件トークンのリストを返します。
const _TCHAR * getWhereToken | ( | short | index | ) | const |
indexで指定された位置の where() or_() and_() で設定されたトークンを返します。
bool isAll | ( | ) | const |
すべてのレコードにマッチさせるFilterかどうかを返します。
bool isBookmarkAlso | ( | ) | const |
table::find() オペレーションの結果に各レコードのbookmarkを含めるどうかを返します。
bool isSeekByBookmarks | ( | ) | const |
addSeekBookmarks() によって値がセットされているかどうかを返します。
bool isStopAtLimit | ( | ) | const |
stopAtLimit() で指定した値が返ります。
queryBase & joinKeySize | ( | int | v | ) |
activeTable の join() outerJoin() に渡す際に、Joinのキーとなるフィールドの数を指定します。 この値は、activeTable::index() で指定したキーのセグメント数以下でなければなりません。
queryBase & limit | ( | int | v | ) |
一回のサーバー側オペレーションで取得する最大レコード数を指定します。
ueryBase & operator= | ( | const queryBase & | r | ) |
代入演算子。
クエリーの実行時に行われる最適化条件をセットします。
queryBase & queryString | ( | const _TCHAR * | str, |
bool | autoEscape = false |
||
) |
str | フィルター文字列をセットします。 |
autoEscape | strで指定したフィルター文字列をエスケープ処理を行うかどうかを指定します。デフォルトはfalseです。 未エスケープの文字列を渡す場合はtrueを指定します。 |
queryBase & reject | ( | int | v | ) |
リジェクトカウントを指定します。マッチしないレコードがリジェクトカウントに達すると検索を中止します。
void release | ( | ) |
queryBaseオブジェクトを破棄します。 create() で生成したオブジェクトは必ずこの関数で破棄してください。
void reserveSeekKeyValuePtrSize | ( | size_t | v | ) |
addSeekKeyValuePtr() 関数によって追加されるキー値用のバッファーを事前に指定されたサイズを確保します。
v | 確保するキー値の数を指定します。 |
void reserveSeekKeyValueSize | ( | size_t | v | ) |
addSeekKeyValue() 関数によって追加されるキー値用のバッファーを事前に指定されたサイズを確保します。
v | 確保するキー値の数を指定します。 |
void reset | ( | ) |
設定されたすべての条件を削除し初期状態に戻します。
初期状態はオブジェクトが作成された直後の状態と同様です。
void reverseAliasName | ( | const _TCHAR * | alias, |
const _TCHAR * | src | ||
) |
aliasが指定された処理で、このオブジェクト内で使われているalias名をオリジナル名に変更します。
alias | 別名を指定します。 |
src | aliasで指定した別名に対するオリジナル名を指定します。 |
short selectCount | ( | ) | const |
addField() 関数によって追加された抽出フィールドの数を返します。
void setWhereToken | ( | short | index, |
const _TCHAR * | v | ||
) |
indexで指定された、where(and_ or_)トークンをvで指定した値に更新します。indexは ゼロからwhereTokens() 未満の値でなければなりません。
queryBase & stopAtLimit | ( | bool | v | ) |
const _TCHAR * toString | ( | ) | const |
設定された抽出フィールドと条件クエリー(フィルター)を文字列で返します。
short whereTokens | ( | ) | const |
where() or_() and_() で指定されたパラメータのトークンの総数を返します。