blog

[MyBatis]条件アノテーション

クエリで使用される比較記号をすばやく定義するために、ドメインクラスのプロパティのConditionアノテーションを使用することができます。 ここでは、演算子は、特定の条件が = <のような "値を与え...

Jan 11, 2021 · 2 min. read

ドメイン・クラスのプロパティで Condition アノテーションを使用すると、クエリで使用される比較記号をすばやく定義できます。

例えば、以下のように記述できます。

@Column
@Condition(operator = LIKE)
private String roleCode;

デフォルトのクエリを使用する場合、この属性はファジー・クエリを使用します。

コンディションクラスを見てみましょう:



  • ここでは特に制限はありませんが、特定の条件が""になるような> = <、デフォルトの=、オートラップファジークエリで、"のような "に設定することもできます。
  • はブーリアン型で、trueを指定すると与えられた値を%で囲みますが、falseを指定すると囲みません。
  • falseの場合はコンディションに入れません。

具体的なコールチェーンは

1,

sql.append(SqlHelper.whereAllIfColumns(entityClass, this.isNotEmpty()));

2,

Condition condition = column.getCondition();
if(condition == null) {
 sql.append(getIfNotNull(column, " AND " + column.getColumnEqualsHolder(), empty));
} else if(!condition.exclude()) {
 sql.append(getIfNotNull(column, " AND " + column.getColumnHolderWithOperator(condition.operator(), condition.autoWrap()), empty));
}

3,

public String getColumnHolderWithOperator(String operator, boolean autoWrap) {
 if("LIKE".equalsIgnoreCase(operator)) {
 return autoWrap?this.column + " LIKE concat(\'%\',concat(" + this.getColumnHolder((String)null) + ",\'%\'))":this.column + " LIKE " + this.getColumnHolder((String)null);
 } else {
 operator = operator.replace(">", "&gt;").replace("<", "&lt;");
 return this.column + operator + this.getColumnHolder((String)null);
 }
}



Read next

FlutterのThemeData

ThemeDataはアプリ間で色やフォントスタイルを共有するためにFlutterで使われます。Themeには2種類あります:Global ThemeとLocal Theme。

Jan 8, 2021 · 4 min read

Http

Jan 6, 2021 · 2 min read

Linuxとカスタムコマンド

Jan 5, 2021 · 1 min read

実装、api、compileOnlyの違い

Jan 5, 2021 · 1 min read