---
schema_version: "1"
id: 8f3174576efb667c37d3dd70c1630975f70f4ce0883b85941d35a9da449056ff
title: データベースからの単一レコードの照会の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/db-connector/1.14/database-connector-query-single.md
canonical_url: https://docs.mulesoft.com/jp/db-connector/1.14/database-connector-query-single
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 381ab3dc6a9512c542ad413ea727a5efaea359bc43a5b5b3fc8579dd02a1b97b
description: MuleSoft Documentation Site
release: "1.14"
latest: true
---
# データベースからの単一レコードの照会の例

データベース用 Anypoint Connector (Database Connector) の ​**Query single**​ 操作では、データベースから単一レコード (行) を返す SQL クエリを実行し、追加の変換なしで結果のペイロードにアクセスできます。この操作では、返された項目はストリーミングされません。クエリを実行すると、返された行のすべての値がメモリに読み込まれ、ペイロードに返されます。

ただし、注意が必要です。行が大きすぎるとメモリ不足になる可能性があります。 また、接続プーリングを使用する場合は、クエリの実行直後に接続がプールに返されるため、アプリケーションで接続が使い果たされることを心配する必要はありません。

**Query single**​ 操作を呼び出す方法は ​**Select**​ 操作と同じですが、​**Query single**​ 操作を使用すると、実際の SQL クエリで返されるレコード数に関係なく、取得する結果は常に 1 つのみになります。

次の例は、MySQL データベースのテーブルから本の情報を取得する操作を Mule アプリケーション内で設定する方法を示しています。この例を実行するには、次の操作が必要です。  

- `BOOK`​ というテーブルを作成する SQL ステートメントを実行し、7 件の本情報 (title、author、bookshopName、isbn、price) のレコードを挿入します。
- SQL データベース接続を設定します。
- Mule アプリケーションを作成します。
- アプリケーションを実行し、curl コマンドを使用してアプリケーションをテストします。

![データベースからの単一レコードの照会のフロー](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-query-single-flow.png)

Figure 1. データベースからの単一レコードの照会のフロー

## [](#データベースのテーブルの作成)データベースのテーブルの作成

SQL データベース接続を設定して Mule アプリケーションを作成する前に、次の SQL ステートメントを実行して ​`BOOK`​ というテーブルを作成し、7 件の本レコードを挿入します。増分 ​`id`​ は、テーブルに追加される新しい各本に関連付けられます。たとえば、テーブルに最初に追加された本の ​`id`​ は ​`1`​ になり、2 番目の本の ​`id`​ は ​`2`​ になります。

```sql
USE SYS;

CREATE TABLE BOOK(
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    title VARCHAR(100),
    author VARCHAR(100),
    bookshopName VARCHAR(100),
    isbn VARCHAR(13),
    price SMALLINT,
    PRIMARY KEY (id)
);

INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('Good Omens', 'Terry Pratchett and Neil Gaiman', 'A.Z. Fell and Co.', '9780060853983', 50);
INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('A Wizard of Earthsea', 'Ursula K. Le Guin', 'A.Z. Fell and Co.', '9780547773742', 20);
INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('IT', 'Stephen King', 'A.Z. Fell and Co.', '9781508297123', 20);
INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('The Nice and Accurate Prophecies of Agnes Nutter', 'Agnes Nutter', 'A.Z. Fell and Co.', '000000000000', 200);
INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('Cujo', 'Stephen King', 'A.Z. Fell and Co.', '9781501192241', 20);
INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('Nation', 'Terry Pratchett', 'A.Z. Fell and Co.', '9780552557795', 30);
INSERT INTO BOOK(title, author, bookshopName, isbn, price) VALUES('The Ocean at the End of the Lane', 'Neil Gaiman', 'A.Z. Fell and Co.', '9780062459367', 30);
```

## [](#mysql-データベース接続の設定)MySQL データベース接続の設定

テーブルを作成したら、Anypoint Studio に移動して MySQL データベース接続を設定します。

1. Studio で新しい Mule プロジェクトを作成します。
2. **\[Global Elements (グローバル要素)\]**​ ビューに移動します。
3. **\[Create (作成)\]**​ をクリックして、​**\[Choose Global Type (グローバル種別の選択)\]**​ ビューを開きます。
4. **\[Filter (検索条件)\]**​ 項目に「​`http`​」と入力し、​**\[HTTP Listener config (HTTP リスナー設定)\]**​ を選択して ​**\[OK\]**​ をクリックします。  
    この設定は、Mule アプリケーションフローを開始する HTTP ​**Listener**​ ソース用です。
5. **\[HTTP Listener config (HTTP リスナー設定)\]**​ ウィンドウで、次の項目に入力します。
    
    - **Protocol (プロトコル)**​: `HTTP (Default)`
    - **Host (ホスト)**​: `All Interfaces [0.0.0.0] (default)`
    - **Port (ポート)**​: `8081`

1. **\[OK\]**​ をクリックします。
2. **\[Global Elements (グローバル要素)\]**​ ビューで ​**\[Create (作成)\]**​ をクリックして ​**\[Choose Global Type (グローバル種別の選択)\]**​ ビューを開きます。
3. **\[Filter (検索条件)\]**​ 項目に「​`database`​」と入力し、​**\[Database Config (データベース設定)\]**​ を選択して ​**\[OK\]**​ をクリックします。
4. **\[Database Config (データベース設定)\]**​ ウィンドウで ​**\[Name (名前)\]**​ 項目を ​`dbConfig`​ に設定します。
5. **\[Connection (接続)\]**​ 項目で ​**\[MySQL Connection (MySQL 接続)\]**​ を選択します。
6. **\[Configure (設定)\]**​ をクリックし、必要な MySQL JDBC ドライバーを追加して、次のいずれかを選択します。  
    
    - **Add recommended library (推奨されるライブラリを追加)**​  
        推奨されるライブラリをインストールします。
    - **Use local file (ローカルファイルを使用)**​  
        ローカルファイルを使用してライブラリをインストールします。
    - **Add Maven dependency (Maven 連動関係を追加)**​  
        Maven 連動関係をインストールしてプロジェクトに追加します。
7. **\[Connection (接続)\]**​ セクションで、次の項目に入力します。  
    
    - **Host (ホスト)**​: `localhost`
    - **Port (ポート)**​: `3306`
    - **User (ユーザー)**​: `root`
    - **Password (パスワード)**​: `mysql`
    - **Database (データベース)**​: `sys`
8. **\[Advanced (詳細)\]**​ タブで ​**\[Pooling profile (プーリングプロファイル)\]**​ 項目を ​**\[Edit inline (インライン編集)\]**​ に設定します。
9. **\[Max pool size (最大プールサイズ)\]**​ 項目を ​`5`​ に設定します。
10. **\[Test Connection (接続をテスト)\]**​ をクリックして、Mule がデータベースに接続できることを確認します。
11. **\[OK\]**​ をクリックします。

次のスクリーンショットは、HTTP ​**リスナー**​のグローバル要素設定を示しています。

![HTTP リスナーのグローバル要素設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-querysingle-example-1.png)

Figure 2. HTTP リスナーの設定

次のスクリーンショットは、データベースのグローバル要素設定を示しています。

![「\[Host (ホスト)\]、\[Port (ポート)\]、\[User (ユーザー)\]、\[Password (パスワード)\] 項目を設定するデータベースの一般設定」](_images/database-querysingle-example-2.png)

Figure 3. \[Database Config (データベース設定)\] の \[General (一般)\] 設定

## [](#mule-アプリケーションの作成設定実行テスト)Mule アプリケーションの作成、設定、実行、テスト

MySQL データベース接続を設定したら、Mule アプリケーションの作成、設定、実行、テストを行います。

### [](#http-リスナーと-set-variable-コンポーネントの設定によるフローの作成)HTTP リスナーと Set Variable コンポーネントの設定によるフローの作成

Mule フローを作成する手順は、次のとおりです。

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、\[HTTP\] の ​**\[Listener\]**​ ソースを選択してキャンバスにドラッグします。  
    このソースは受信 HTTP メッセージ属性をリスンすることでフローを開始します。
2. **\[Connector configuration (コネクタ設定)\]**​ 項目で ​`HTTP_Listener_config`​ グローバル設定を選択します。
3. **\[Path (パス)\]**​ 項目を ​`/select/book/{maxId}`​ に設定します。  
    `maxId`​ 値パラメーターは、データベースから取得する本レコードの数を示します。データベース接続プールに設定された最大接続数に関係なく、この値を増分できます。
4. **\[Mime Type (Mime タイプ)\]**​ タブで ​**\[Mime Type (MIME タイプ)\]**​ 項目を ​`application/json`​ に設定します。
5. **\[Advanced (詳細)\]**​ タブで ​**\[Allowed methods (許可されるメソッド)\]**​ 項目を ​`GET`​ に設定します。
6. **\[Set Variable\]**​ コンポーネントを ​**\[Listener\]**​ ソースの右にドラッグします。  
    このコンポーネントでは、​**Query single**​ 操作から取得されるデータベース結果を保存するための新しい変数を作成します。
7. **\[Name (名前)\]**​ 項目を ​`bookCollection`​、​**\[Value (値)\]**​ 項目を ​`#[[]]`​ に設定します。

![Set Variable コンポーネントの設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-querysingle-example-3.png)

Figure 4. Set Variable の設定

### [](#for-each-コンポーネントquery-single-操作set-payload-コンポーネントの設定)For Each コンポーネント、Query Single 操作、Set Payload コンポーネントの設定

**For Each**​ コンポーネントを使用して、​**HTTP リスナー**​で要求された本の数まで反復処理することで、Mule アプリケーションの作成を継続します。次に、​**Query single**​ 操作を使用して本の情報を取得し、結果をペイロード変数に保存します。

1. **\[For Each\]**​ コンポーネントを ​**\[Set Variable\]**​ の右にドラッグします。
2. **\[Collection (コレクション)\]**​ 項目を ​`#[1 to attributes.uriParams.maxId as Number]`​ に設定します。  
    HTTP 要求 ​`/select/book/{maxId}`​ を実行すると、この式により、テーブル内の本のコレクションが最初の本 (​`1`​) から ​`maxId`​ パラメーターに設定された本の数まで反復処理されます。
    
    ![For Each の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-querysingle-example-4.png)
    
    Figure 5. For Each の設定
3. **\[Query single\]**​ 操作を ​**\[For Each\]**​ コンポーネントにドラッグします。
4. **\[Connector configuration (コネクタ設定)\]**​ 項目を ​`Database_Config`​ に設定して、MySQL データベース設定に接続します。
5. **\[SQL Query Text (SQL クエリテキスト)\]**​ 項目を ​`SELECT id, title, author FROM BOOK WHERE id = :id`​ に設定します。  
    このクエリでは、データベースから本の情報を選択します。
6. **\[Input Parameters (入力パラメーター)\]**​ 項目を ​`![CDATA[#[{'id': payload }]]]`​ に設定します。  
    この式では、(前述の ​**\[SQL Query Text (SQL クエリテキスト)\]**​ 式で参照されている) キーパラメーター ​`id`​ を、​`SELECT`​ クエリを使用して取得した本情報の結果値である ​`payload`​ にマップします。
    
    ![Query single の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-querysingle-example-5.png)
    
    Figure 6. Query single の設定
7. 別の ​**\[Set Variable\]**​ コンポーネントを ​**\[Query single\]**​ 操作の右にドラッグします。
8. **\[Name (名前)\]**​ 項目を ​`bookCollection`​、​**\[Value (値)\]**​ 項目を ​`#[vars.bookCollection ++ [payload]]`​ に設定します。  
    元の変数 ​`bookCollection`​ に、取得した本情報の ​`payload`​ が保存されるようになります。
9. **\[Set Payload\]**​ コンポーネントを ​**\[For Each\]**​ コンポーネントの右にドラッグします。
10. **\[Value (値)\]**​ 項目を ​`#[vars.bookCollection]`​ に設定して、変数のコンテンツを新しい出力ペイロードとして保存します。

![Set Payload の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-querysingle-example-6.png)

Figure 7. Set Payload の設定

### [](#mule-アプリケーションの実行およびテスト)Mule アプリケーションの実行およびテスト

Mule アプリケーションを実行およびテストする手順は、次のとおりです。

1. Studio でプロジェクトを保存します。
2. コマンドラインで ​`curl localhost:8081/select/book/7`​ を実行して、アプリケーションをテストします。  
    このコマンドでは、プールに設定されている最大接続数 (​`5`​) に関係なく、テーブルの最初の 7 個の本を選択します。

## [](#データベースからの単一レコードを照会するための-xml)データベースからの単一レコードを照会するための XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd"></mule>
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="9501220e-fba8-440b-afdf-14b4ca010fe8" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>

	<db:config name="Database_Config" doc:name="Database Config" doc:id="20db2231-3668-48d0-bb60-66f120fc99c8" >
		<db:my-sql-connection host="localhost" port="3306" user="root" password="mysql" database="sys">
			<db:pooling-profile maxPoolSize="5"/>
		</db:my-sql-connection>
	</db:config>

	<flow name="querysingleForeachFlow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/select/book/{maxId}" outputMimeType="application/json" allowedMethods="GET"/>
		<set-variable variableName="bookCollection" value="#[[]]" />
		<foreach collection="#[1 to attributes.uriParams.maxId as Number]">
			<db:query-single doc:name="Query single" config-ref="Database_Config">
				<db:sql>SELECT id, title, author FROM BOOK WHERE id = :id</db:sql>
				<db:input-parameters><![CDATA[#[{'id': payload }]]]></db:input-parameters>
			</db:query-single>
			<set-variable variableName="bookCollection" value="#[vars.bookCollection ++ [payload]]" />
		</foreach>
		<set-payload value="#[output application/json --- { books : vars.bookCollection }]" />
	</flow>
```

## [](#関連情報)関連情報

- [Database Connector の例](https://docs.mulesoft.com/jp/db-connector/1.14/database-connector-examples)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)