CRUD Operations in Mule 4
RAML is
designed in Design center of anypoint platform and imported in Mule flow
RAML:
#%RAML
1.0
title:
Employee API
version:
v1
/person:
get:
description: get data of all persons
displayName: person
responses:
200:
body:
application/json:
example:
[{
"id"
: 1,
"firstName"
: "Rahul",
"lastName"
: "Singh",
"city"
: "Mumbai"
}]
post:
description: insert data of persons
displayName: person
responses:
201:
body:
application/json:
example:
{
"data"
: "Data is inserted successfully"
}
put:
description: update data of persons
displayName: person
responses:
204:
body:
application/json:
example:
{
"data"
: "Data is updated successfully"
}
delete:
description: delete data of persons
displayName: person
responses:
200:
body:
application/json:
example:
{
"data"
: "Data is deleted successfully"
}
We have generated flows
from RAML:
Generated flows are connected by main flow by flow reference.
Main
flows:
I have used
mysql db. Configuration is done in DB connector and by placing mysql dependency
in pom.xml.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
XML project code:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:db="http://www.mulesoft.org/schema/mule/db"
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/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<db:config name="Database_Config" doc:name="Database Config" doc:id="8356c5f6-f096-4f51-a401-2d155e19e090" >
<db:my-sql-connection host="localhost" port="3306" user="root" password="" database="mule4" />
</db:config>
<flow name="test_ramlcrudFlow" doc:id="6e2beb02-ba34-428a-9ca1-398794a42930" >
<db:select doc:name="Select" doc:id="1d316629-5b14-4c20-8c58-0e4c45646749" config-ref="Database_Config">
<db:sql >select * from info;</db:sql>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="76c1fa8f-890a-42a3-876d-4342c77e97b7" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="test_ramlcrudFlow1" doc:id="0528def8-b7e3-4306-b3ef-1c24650416d3" >
<foreach doc:name="For Each" doc:id="e8c3faa7-92e2-4aa6-9ac1-c1b75ccd38d3" >
<db:insert doc:name="Insert" doc:id="027de1aa-9b8c-43e9-a0b7-f6c9b82174dd" config-ref="Database_Config">
<db:sql>insert into info(ID,NAME) values(:id,:name);</db:sql>
<db:input-parameters><![CDATA[#[{
"id" :payload.id,
"name" :payload.name
}]]]></db:input-parameters>
</db:insert>
</foreach>
<set-payload value="#[%dw 2.0
output application/json
---
{
data:'Data is successfully inserted'
}]" doc:name="Set Payload" doc:id="5b4d03ea-620d-4e79-90ec-e4ba6202fef7" />
</flow>
<flow name="test_ramlcrudFlow2" doc:id="0825e214-79a3-41cb-b8b9-cc6d9760400d" >
<foreach doc:name="For Each" doc:id="a7719b11-0510-4591-ad4f-3df4347c1fa2" >
<db:update doc:name="Update" doc:id="fdf20631-8b7c-492c-96c8-f8ce5d0353fb" config-ref="Database_Config">
<db:sql>update info set ID=:id,NAME=:name where ID=:id</db:sql>
<db:input-parameters><![CDATA[#[{'id':payload.id,
'name':payload.name
}]]]></db:input-parameters>
</db:update>
</foreach>
<set-payload value="#[%dw 2.0
output application/json
---
{
data:'Data is successfully updated'
}]" doc:name="Set Payload" doc:id="e7474e0b-6bec-41b9-8ebb-39e3a22f0b08" />
</flow>
<flow name="test_ramlcrudFlow3" doc:id="35d57845-fd2b-4f43-a975-73fa49d694b8" >
<foreach doc:name="For Each" doc:id="c3436404-7017-4a71-b787-7f019ec5e28c" >
<db:delete doc:name="Delete" doc:id="93de87a5-e4ef-48d5-b9b6-cc33a897723f" config-ref="Database_Config">
<db:sql>delete from info where ID=:id;</db:sql>
<db:input-parameters><![CDATA[#[id:payload.id]]]></db:input-parameters>
</db:delete>
</foreach>
<set-payload value="#[%dw 2.0
output application/json
---
{
data:'Data is successfully deleted'
}]" doc:name="Set Payload" doc:id="457fd4a7-851c-479e-95a6-fd7c6db3cdc0" />
</flow>
</mule>
You might like this:
No comments:
Post a Comment