INTER-Mediator Lab. - Room 1
データベースのテーブルから単にすべてのレコードを取り出すということをすることもありますが、一般には、条件を与えて絞り込みを行い、指定したフィールドのデータをもとにしたソートを行った結果を受け取ります。データベースの処理では、レコードを取り出すときだけでなく、特定のレコードの内容を修正するような場合には、検索条件を与えます。
INTER-Mediatorでは、コンテキストに検索条件やソート条件を記載することで、そのコンテキストを利用したデータベースからのデータ取り出しやデータ編集で、その検索条件が必ず常に付与される仕組みを持っています。
| id | pname | tel | device |
|---|---|---|---|
| 1 | 山田一郎 | 0123-456-9876 | iphone |
| 2 | 風下寒子 | 0123-456-9876 | iphone |
| 3 | 屋根裏夫 | 0123-456-9876 | ipad |
たとえば、以下のコンテキストだと、「pname = ‘風下寒子’」という検索条件がデータベースへのデータを取り出すときに追加され、pnameフィールドがこの名前の人のレコードだけが取り出されます。ここでは、queryに対する値は複数の項目を持つので、そのような場合には、[ ] で囲って記述することにします。
name: address
key: id
query: [field: pname, operator: =, value: 風下寒子]
operatorは利用するデータベースエンジンに依存します。MySQLでは文字列の前方一致は次のようなコンテキストで記述します。つまり「tel like ’03%’」という検索条件になり、telフィールドが03で始まるレコードが検索条件に一致します。MySQLのlike演算子では%がワイルドカードになり演算子の右側の文字列では複数個登場できます。また、ソート条件についても、fieldとdirectionの2つの指定が必要になり、fieldはもちろん基準になるフィールド名を指定します。directionは昇順か降順かを指定しますが、キーワードはデータベースエンジンに依存します。
name: address
key: id
query: [field: tel, operator: like, value: 03%]
sort: [field: pname, direction: asc]
queryやsortは複数の指定が可能です。複数の指定がある場合は、[ ]で囲まれたセットをカンマで区切って記述することにします。以下のコンテキストの場合、telフィールドが03で始まり、deviceフィールドの内容がiphoneであるレコードが抽出されます。2つの条件が両方満たすAND条件として解釈されます。そしてレコードをpnameフィールドを基準に昇順でソートした結果を返します。
name: address
key: id
query: [field: tel, operator: like, value: 03%],[field: device, operator: =, value: iphone]
sort: [field: pname, direction: asc]
今回の調査環境で利用しているMySQLで利用する演算子(operatorに記述できる記号)は次の通りです。
=:等しい、!=:等しくない、<:より小さい、>:より大きい、<=:以下、>=:以上、like:マッチング
読み終わったとき、以下のラジオボタンのいずれかを選択して、「読み終わった」ボタンをクリックしてください。
開いてから今まで、このページを、
このページの内容について、自分が感じる理解度は、
←クリックすると、次のページに移動します。