CRUDページを作成して、値の範囲を決定するための数値範囲ルールを管理する必要があります(値が<の場合は10、値が小さい場合は10を返します)。 & < 20、return "medium"など)。私はこれらのルールをMySQLに保存し、それらをJavaで評価する必要があります(特定の値のカテゴリを決定するなど)。私は、開始/終了範囲の値と開始/終了の演算子(VARCHARとして)を格納し、Javaの条件文などに変換するIF文の束を使用してホイールを再作成しているように感じます。テーブルドリブンレンジルールを保存して評価する方法
ここにあります私は...
CREATE TABLE `category_range` (
`category_name` varchar(36) NOT NULL,
`range_start_op` varchar(2),
`range_start_val` decimal(10,2),
`range_end_op` varchar(2),
`range_end_val` decimal(10,2));
--example values
'Small', null, null, '<', 10.0
'Medium', '>=', 10.0, '<', 20.0
'Large', '>=', 20, null, null
を検討しているテーブル構造は、Javaで、試合を決定するためにこれを行う、その後、事業者のためのいくつかの定数を定義...
if (operation.equals(OP_EQUAL)) {
return value == rangeValue;
} else if (operation.equals(OP_NOT_EQUAL)) {
return value != rangeValue;
} else if (operation.equals(OP_GREATER_THAN)) {
return value > rangeValue;
} else if (operation.equals(OP_GREATER_THAN_OR_EQUAL)) {
return value >= rangeValue;
} else if (operation.equals(OP_LESS_THAN)) {
return value < rangeValue;
} else if (operation.equals(OP_LESS_THAN_OR_EQUAL)) {
return value <= rangeValue;
}
はパターンがあり、および/私はこれをよりエレガントにするのに役立つライブラリですか?
UPDATE:いくつかのフィードバックをもとに、ここで私は、柔軟性の面で...上のわずかな妥協点を解決したものですが、非常にきれいで、大規模な過剰殺すより表現することができるもののために思わ
CREATE TABLE `category_range` (
`category_name` varchar(36) NOT NULL,
`min_value` decimal(10,2),
`max_value' decimal(10,2));
/**
* determines if the specified value matches the given range
* minValue is inclusive (value >= min)
* maxValue is exclusive (value < max)
* min/max both the same assumes exact value match
* min/max both null assumes match all values
* @param value
* @return
*/
public boolean doesValueMatchRange(double value) {
if (minValue == null && maxValue == null) {
return true;
}
else if (minValue == null) {
return value < maxValue;
}
else if (maxValue == null) {
return value >= minValue;
}
else if (minValue.equals(maxValue)) {
return value == minValue.doubleValue();
}
else {
return (value > minValue) && (value <= maxValue);
}
}
tadmanに感謝しますが、他のカテゴリ/ルールのバリエーションには異なる演算子(==、!=、> =、>、<、<=)の柔軟性が必要です... –
は、 ...どうも –