SlideShare a Scribd company logo
Mule Integration Workshop
JDBC
Rajarajan Sadhasivam
• Rapidly connect any application, anywhere
• Anypoint Platform helps companies prepare for the future with a next-
generation SOA platform that connects on-premises systems and the
cloud.
• Mule ESB, CloudHub, Mule Studio, Mule Enterprise Management,
Anypoint Connectors
Anypoint
Platform for
SOA
• Connect SaaS with any application, anywhere
• Anypoint Platform helps companies connect SaaS applications to each
other and the enterprise, in the cloud and on-premises.
• CloudHub, Mule ESB, Mule Studio, CloudHub Insight, Anypoint
Connectors
Anypoint
Platform for
SaaS
• All you need to connect any app, any device and any API
• With the Anypoint Platform for APIs, you can build new APIs, design
new interfaces for existing APIs and more efficiently manage all your
APIs using a single platform.
• API Portal, API Manager, Mule Studio, Mule ESB, CloudHub
Anypoint
Platform for
API
1
MuleSoft Anypoint Platforms
Chapters
Schedule
Filter Types
JDBC - Introduction
JDBC Endpoint: Inbound vs Outbound
JDBC Connector Attributes
Data sources Shortcuts
Results Data Structure
JDBC - CE vs EE
JDBC Transactions
MEL - JDBC
JDBC - Introduction
 The Java Database Connectivity (JDBC) transport connects to any relational
database that supports JDBC.
 A JDBC inbound endpoint maps to an SQL SELECT statement while a JDBC
outbound endpoint maps to an SQL SELECT, UPDATE, INSERT or DELETE
statement.
 Similar to the File transport, consumption of records needs to be simulated.
 Schema definition
CE Version:
<xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jdbc
http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd">
EE Version:
<xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jdbc
http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd">
JDBC Endpoint: Inbound vs Outbound
 A SELECT on a JDBC inbound endpoint is polling. This means that Mule will
attempt to read records every so often from a given database table. In
addition, Mule will only retrieve un-read records. In other words, a JDBC
inbound endpoint will consume records.
 Inbound Endpoints can only be configured for SELECT queries
 A SELECT on a JDBC outbound endpoint is triggered by a Mule event. For
example, this Mule event could have been created as a result of an HTTP
request.
 A JDBC outbound endpoint does not care if a record has been read or not. It
will retrieve all records matching the SELECT’s WHERE clause.
 Outbound Endpoints can be configured for any allowed (as set by database)
query.
JDBC Connector Attributes
 JDBC transport requires configuration of the JDBC connector. In the connector,
we must point the dataSource-ref attribute to a Spring bean and the Spring
bean would configure a class which implements the javax.sql.DataSource
interface. Configuring a DataSource usually involves setting the URL, JDBC
driver, username and password bean properties.
 JDBC connector we can also add the queries that are to be executed by the
JDBC inbound and outbound endpoints.
 Each query is represented as a child element in the JDBC connector element.
Moreover, each query needs a key (which is a descriptive name for the query)
as well as the actual SQL query itself.
 There are three types of queries available:
 Read queries are SELECT SQL statements bound to an inbound or an
outbound endpoint.
 Write queries are INSERT or UPDATE SQL statements bound to an outbound
endpoint.
JDBC Connector Attributes (Contd)
 Acknowledgement queries are executed immediately after a read query. This
type of query is identified with the same name as the read query together
with an '.ack' suffix. An acknowledgement query is normally used to mark
the previously selected rows as having been processed or consumed. This
type of query is usually an UPDATE statement.
 Other properties that are set on the connector but are optional are:
 pollingFrequency: The frequency to poll the database for new records, in
milliseconds.
 queryRunner-ref: The name of the class to execute queries. The default class
is org.apache.commons.dbutils.QueryRunner.
 resultSetHandler-ref: The name of the class used to pass query results back.
The default class is org.apache.commons.dbutils.handlers.MapListHandler
converts the result set to an object.
Eg:
<jdbc:connector dataSource-ref="ordersDB" name="salesDB“ pollingFrequency="1000">
JDBC Connector Attributes (Contd)
<jdbc:query key="getTest“ value="SELECT ID, TYPE, DATA, ACK, RESULT FROM TEST WHERE
TYPE =#[map-payload:type] AND ACK IS NULL"/>
<jdbc:query key="getTest.ack“ value="UPDATE TEST SET ACK = #[map-payload:NOW] WHERE
ID = #[map-payload:id] AND TYPE =#[map-payload:type] AND DATA = #[map-payload:data]"/>
<jdbc:query key="writeTest“ value="INSERT INTO TEST (ID, TYPE, DATA, ACK, RESULT) VALUES
(NULL, #[map-payload:type], #[map-payload:payload], NULL, NULL)"/>
</jdbc:connector>
<flow name="...">
<jdbc:inbound-endpoint queryKey="getTest"/>
...
<jdbc:outbound-endpoint queryKey="writeTest"/>
</flow>
<spring:bean class="org.springframework.jdbc.datasource. DriverManagerDataSource" id="ordersDB">
<spring:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<spring:property name="url" value="jdbc:mysql://localhost:3306/orderdb"/>
<spring:property name="username" value="myName"/>
<spring:property name="password" value="myPwd"/>
</spring:bean>
Datasources Shortcuts
 Mule 3.2 and later versions provide shortcuts for configuring a number of data
sources including Derby, MySQL, Oracle and PostgreSQL:
Eg:
MySql:
<jdbc:mysql-data-source database="mule" name="dataSource" password="secret" user="mysql"/>
Derby:
<jdbc:derby-data-source create="true" database="mule" name="dataSource"/>
Oracle:
<jdbc:oracle-data-source instance="mule" name="dataSource" password="secret" user="oracle"/>
Results Data Structure
 Query(SELECT statement) result, is an array of Maps
 Each Map represents a record in the database and each entry in the Map
represents a column in the record.
 Using a Groovy expression is one way of retrieving the required data from the
result set.
JDBC - CE vs EE
 The EE version of the JDBC transport offers a number of extra features over and above
the features provided by the CE version. List of JDBC features offered by both versions:
 Select queries with acknowledgement
 Basic Insert/Update/Delete: Single row Insert/Update/Delete
 Basic Stored Procedure Support: Supports only in parameters
 Unnamed Queries: Queries can be invoked programmatically
 Flexible Data Source Config: Can configure data sources through JNDI, XAPool or
Spring.
 Transactions
 Outbound Select Query: Retrieve records using the select statement configured on
outbound endpoints.
 The EE JDBC transport also offers:
 Large Dataset Retrieval: Allows the consumption of records in smaller batches thus
allows the retrieval of large datasets.
JDBC - CE vs EE (Contd)
 Batch Insert/Update/Delete: Batch inserts/update/delete improve the
performance of the JDBC transport considerably when large datasets need
to be inserted/updated.
 Advanced Transformers: These transformers include XML and CSV
transformers.
 Advanced Stored Procedures: Allows both in and out parameters.
JDBC Transactions
 Similar to JMS, the JDBC transport has support for single resource JDBC transactions. This is
configured using the jdbc:transaction element as seen in the following example.
Eg:
<jdbc:connector dataSource-ref="jdbcDataSource" name="jdbcConnector">
<jdbc:query key="JobSearch“ value="SELECT Id,Task FROM Jobs WHERE Started IS NULL"/>
<jdbc:query key="JobSearch.ack“ value="UPDATE Jobs SET Started=#[function:now] WHERE Id = #[map-
payload:Id]"/>
<jdbc:query key="InsertNewTask“ value="INSERT INTO Tasks (JobId,Task) VALUES (#[map-payload:Id],#[map-
payload:Task])"/>
</jdbc:connector>
<flow name="JdbcSimpleTransaction">
<jdbc:inbound-endpoint queryKey="JobSearch">
<jdbc:transaction action="ALWAYS_BEGIN"/>
</jdbc:inbound-endpoint>
<component class="com.mulesoft.MyCustomComponent"/>
<jdbc:outbound-endpoint queryKey="InsertNewTask">
<jdbc:transaction action="ALWAYS_JOIN"/>
</jdbc:outbound-endpoint>
</flow>
MEL - JDBC
Arrays and Lists
 Literal forms for Lists ({item1, item2, . . }) and Arrays ([item1, item2, . . ]). Using the
literal form the payload can be set by:
Eg: Message.payload = ({‘foo’, ‘bar’, ‘dog’})
This will set the payload to a list of 3 elements. In the MEL, as in many other
languages, indexes start at 0. Eg: Message.payload[2] results in ‘dog’
 Arrays and Lists in Java must specify the type of their contents, but in MEL they are
untyped.
 The MEL supplies the correct type when we use them – either by determining it at
compile time or coercing the array to the correct type at run time.
Eg: Valid MEL: Message.payload = ({‘foo’, 1234, 1234.56})
Mule Maps
 The MEL has built-in support for maps.
 Maps are used to store "associative arrays" or "dictionaries".
Eg: Message.payload = [ "Brett":100,"Pete":"Did not finish", "Andrew":86.879]
MEL – JDBC (Contd)
 MEL provides a very clean way to access the values in a map.
 Use square brackets to address the key:
 Eg: Message.payload ["Pete"] => Output: 'Did not finish'
 The MEL supplies the correct type when we use them – either by determining it at
compile time or coercing the array to the correct type at run time. If there is no value,
the operation returns a Null.
Arrays of Maps
 The very common Mule Payload is an array of maps
Eg: {['destination':'SFO', 'price':500]}. Price of SFO can be found by
Message.payload[0]['price']
 The following example shows how to check the size of an array in a WHEN statement,
evaluates to true if the array is not empty:
Eg: <when expression="message.payload.size() > 0"> This can be used to avoid
NullPayloads when potentially asking for something that the database didn't return any
values for.
Thank you
Ad

More Related Content

What's hot (19)

Mule Microsoft Service Bus
Mule Microsoft Service BusMule Microsoft Service Bus
Mule Microsoft Service Bus
Ankush Sharma
 
Mule overview-ppt
Mule overview-pptMule overview-ppt
Mule overview-ppt
Prabhat gangwar
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
mdfkhan625
 
Mule jms
Mule   jmsMule   jms
Mule jms
Rajarajan Sadhasivam
 
Mulesoft Consuming Web Service - Web Service Consumer
Mulesoft Consuming Web Service - Web Service ConsumerMulesoft Consuming Web Service - Web Service Consumer
Mulesoft Consuming Web Service - Web Service Consumer
Vince Soliza
 
Distributed database
Distributed databaseDistributed database
Distributed database
sanjay joshi
 
Mule new jdbc component
Mule new jdbc componentMule new jdbc component
Mule new jdbc component
Anirban Sen Chowdhary
 
Mule: Java Transformer
Mule: Java TransformerMule: Java Transformer
Mule: Java Transformer
Sulthony Hartanto
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introduction
Son Nguyen
 
Message structure
Message structureMessage structure
Message structure
Son Nguyen
 
Mule esb
Mule esbMule esb
Mule esb
charan teja R
 
MuleSoft ESB Composite Source
MuleSoft ESB Composite SourceMuleSoft ESB Composite Source
MuleSoft ESB Composite Source
akashdprajapati
 
Mule any point studio
Mule any point studioMule any point studio
Mule any point studio
Son Nguyen
 
Mule esb
Mule esbMule esb
Mule esb
Son Nguyen
 
Mulesoft ppt
Mulesoft pptMulesoft ppt
Mulesoft ppt
Achyuta Lakshmi
 
Mule java part-1
Mule java part-1Mule java part-1
Mule java part-1
Ravinder Singh
 
Muletransformers
MuletransformersMuletransformers
Muletransformers
vijaynerd
 
Mule esb introduction
Mule esb introductionMule esb introduction
Mule esb introduction
Praneethchampion
 
Junit in mule demo
Junit in mule demo Junit in mule demo
Junit in mule demo
javeed_mhd
 

Viewers also liked (19)

Mule exception strategies
Mule exception strategiesMule exception strategies
Mule exception strategies
Krishna_in
 
Mule JMS Transport
Mule JMS TransportMule JMS Transport
Mule JMS Transport
Rupesh Sinha
 
Error Handling Framework in Mule ESB
Error Handling Framework in Mule ESBError Handling Framework in Mule ESB
Error Handling Framework in Mule ESB
Sashidhar Rao GDS
 
Message properties component in Mule
Message properties component in MuleMessage properties component in Mule
Message properties component in Mule
Khan625
 
Mule esb
Mule esbMule esb
Mule esb
Gennaro Spagnoli
 
Anypoint data gateway
Anypoint data gatewayAnypoint data gateway
Anypoint data gateway
Mohammed246
 
Mule jdbc
Mule   jdbcMule   jdbc
Mule jdbc
KalaimathiS
 
Rate Limiting - SLA Based Policy
Rate Limiting - SLA Based PolicyRate Limiting - SLA Based Policy
Rate Limiting - SLA Based Policy
Vince Soliza
 
Exception handling in mule
Exception handling in muleException handling in mule
Exception handling in mule
nagarajupatangay
 
Mule Esb Data Weave
Mule Esb Data WeaveMule Esb Data Weave
Mule Esb Data Weave
Mohammed246
 
Anypoint platform for api
Anypoint platform for apiAnypoint platform for api
Anypoint platform for api
Vince Soliza
 
Mapping and listing in mule
Mapping and listing in muleMapping and listing in mule
Mapping and listing in mule
Khan625
 
Dataweave 160103180124
Dataweave 160103180124Dataweave 160103180124
Dataweave 160103180124
vijay dhanakodi
 
Apply Rate Limiting Policy
Apply Rate Limiting Policy Apply Rate Limiting Policy
Apply Rate Limiting Policy
Vince Soliza
 
Mule batch processing
Mule batch processingMule batch processing
Mule batch processing
Ravinder Singh
 
SOAP To REST API Proxy
SOAP To REST API ProxySOAP To REST API Proxy
SOAP To REST API Proxy
Vince Soliza
 
Mule properties
Mule propertiesMule properties
Mule properties
Ravinder Singh
 
Mule esb examples
Mule esb examplesMule esb examples
Mule esb examples
Sashidhar Rao GDS
 
Mule batch job
Mule batch jobMule batch job
Mule batch job
Anirban Sen Chowdhary
 
Mule exception strategies
Mule exception strategiesMule exception strategies
Mule exception strategies
Krishna_in
 
Mule JMS Transport
Mule JMS TransportMule JMS Transport
Mule JMS Transport
Rupesh Sinha
 
Error Handling Framework in Mule ESB
Error Handling Framework in Mule ESBError Handling Framework in Mule ESB
Error Handling Framework in Mule ESB
Sashidhar Rao GDS
 
Message properties component in Mule
Message properties component in MuleMessage properties component in Mule
Message properties component in Mule
Khan625
 
Anypoint data gateway
Anypoint data gatewayAnypoint data gateway
Anypoint data gateway
Mohammed246
 
Rate Limiting - SLA Based Policy
Rate Limiting - SLA Based PolicyRate Limiting - SLA Based Policy
Rate Limiting - SLA Based Policy
Vince Soliza
 
Exception handling in mule
Exception handling in muleException handling in mule
Exception handling in mule
nagarajupatangay
 
Mule Esb Data Weave
Mule Esb Data WeaveMule Esb Data Weave
Mule Esb Data Weave
Mohammed246
 
Anypoint platform for api
Anypoint platform for apiAnypoint platform for api
Anypoint platform for api
Vince Soliza
 
Mapping and listing in mule
Mapping and listing in muleMapping and listing in mule
Mapping and listing in mule
Khan625
 
Apply Rate Limiting Policy
Apply Rate Limiting Policy Apply Rate Limiting Policy
Apply Rate Limiting Policy
Vince Soliza
 
SOAP To REST API Proxy
SOAP To REST API ProxySOAP To REST API Proxy
SOAP To REST API Proxy
Vince Soliza
 
Ad

Similar to Mule jdbc (20)

Java Database Connectivity by shreyash simu dbce.pptx
Java Database Connectivity by shreyash simu dbce.pptxJava Database Connectivity by shreyash simu dbce.pptx
Java Database Connectivity by shreyash simu dbce.pptx
ash909077
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
backdoor
 
Java jdbc
Java jdbcJava jdbc
Java jdbc
Arati Gadgil
 
JDBC.ppt
JDBC.pptJDBC.ppt
JDBC.ppt
ChagantiSahith
 
Introduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applicationsIntroduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applications
Fulvio Corno
 
Jdbc
JdbcJdbc
Jdbc
DeepikaT13
 
Chapter 4 event it theory programming.pptx
Chapter 4 event it theory programming.pptxChapter 4 event it theory programming.pptx
Chapter 4 event it theory programming.pptx
kmkkali41
 
Jdbc[1]
Jdbc[1]Jdbc[1]
Jdbc[1]
Fulvio Corno
 
JDBC programming
JDBC programmingJDBC programming
JDBC programming
Fulvio Corno
 
MyBatis
MyBatisMyBatis
MyBatis
Roman Dovgan
 
Advance Java Practical file
Advance Java Practical fileAdvance Java Practical file
Advance Java Practical file
varun arora
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
AISHWARIYA1S
 
Database Access With JDBC
Database Access With JDBCDatabase Access With JDBC
Database Access With JDBC
Dharani Kumar Madduri
 
Overview Of JDBC
Overview Of JDBCOverview Of JDBC
Overview Of JDBC
Mindfire Solutions
 
Jdbc
JdbcJdbc
Jdbc
mishaRani1
 
Data access
Data accessData access
Data access
Joshua Yoon
 
Enterprise Spring
Enterprise SpringEnterprise Spring
Enterprise Spring
Emprovise
 
Java database connectivity notes for undergraduate
Java database connectivity notes for undergraduateJava database connectivity notes for undergraduate
Java database connectivity notes for undergraduate
RameshPrasadBhatta2
 
Core jdbc basics
Core jdbc basicsCore jdbc basics
Core jdbc basics
Sourabrata Mukherjee
 
jdbc_presentation.ppt
jdbc_presentation.pptjdbc_presentation.ppt
jdbc_presentation.ppt
DrMeenakshiS
 
Java Database Connectivity by shreyash simu dbce.pptx
Java Database Connectivity by shreyash simu dbce.pptxJava Database Connectivity by shreyash simu dbce.pptx
Java Database Connectivity by shreyash simu dbce.pptx
ash909077
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
backdoor
 
Introduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applicationsIntroduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applications
Fulvio Corno
 
Chapter 4 event it theory programming.pptx
Chapter 4 event it theory programming.pptxChapter 4 event it theory programming.pptx
Chapter 4 event it theory programming.pptx
kmkkali41
 
Advance Java Practical file
Advance Java Practical fileAdvance Java Practical file
Advance Java Practical file
varun arora
 
Enterprise Spring
Enterprise SpringEnterprise Spring
Enterprise Spring
Emprovise
 
Java database connectivity notes for undergraduate
Java database connectivity notes for undergraduateJava database connectivity notes for undergraduate
Java database connectivity notes for undergraduate
RameshPrasadBhatta2
 
jdbc_presentation.ppt
jdbc_presentation.pptjdbc_presentation.ppt
jdbc_presentation.ppt
DrMeenakshiS
 
Ad

Recently uploaded (20)

One Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learningOne Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learning
momer9505
 
Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025
Mebane Rash
 
Political History of Pala dynasty Pala Rulers NEP.pptx
Political History of Pala dynasty Pala Rulers NEP.pptxPolitical History of Pala dynasty Pala Rulers NEP.pptx
Political History of Pala dynasty Pala Rulers NEP.pptx
Arya Mahila P. G. College, Banaras Hindu University, Varanasi, India.
 
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACYUNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
DR.PRISCILLA MARY J
 
Handling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptxHandling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptx
AuthorAIDNationalRes
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Library Association of Ireland
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdfBiophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
PKLI-Institute of Nursing and Allied Health Sciences Lahore , Pakistan.
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
SPRING FESTIVITIES - UK AND USA -
SPRING FESTIVITIES - UK AND USA            -SPRING FESTIVITIES - UK AND USA            -
SPRING FESTIVITIES - UK AND USA -
Colégio Santa Teresinha
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
Introduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe EngineeringIntroduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe Engineering
Damian T. Gordon
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 5-3-2025.pptx
YSPH VMOC Special Report - Measles Outbreak  Southwest US 5-3-2025.pptxYSPH VMOC Special Report - Measles Outbreak  Southwest US 5-3-2025.pptx
YSPH VMOC Special Report - Measles Outbreak Southwest US 5-3-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 
Operations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdfOperations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdf
Arab Academy for Science, Technology and Maritime Transport
 
One Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learningOne Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learning
momer9505
 
Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025
Mebane Rash
 
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACYUNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
DR.PRISCILLA MARY J
 
Handling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptxHandling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptx
AuthorAIDNationalRes
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Library Association of Ireland
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
Introduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe EngineeringIntroduction to Vibe Coding and Vibe Engineering
Introduction to Vibe Coding and Vibe Engineering
Damian T. Gordon
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 

Mule jdbc

  • 2. • Rapidly connect any application, anywhere • Anypoint Platform helps companies prepare for the future with a next- generation SOA platform that connects on-premises systems and the cloud. • Mule ESB, CloudHub, Mule Studio, Mule Enterprise Management, Anypoint Connectors Anypoint Platform for SOA • Connect SaaS with any application, anywhere • Anypoint Platform helps companies connect SaaS applications to each other and the enterprise, in the cloud and on-premises. • CloudHub, Mule ESB, Mule Studio, CloudHub Insight, Anypoint Connectors Anypoint Platform for SaaS • All you need to connect any app, any device and any API • With the Anypoint Platform for APIs, you can build new APIs, design new interfaces for existing APIs and more efficiently manage all your APIs using a single platform. • API Portal, API Manager, Mule Studio, Mule ESB, CloudHub Anypoint Platform for API 1 MuleSoft Anypoint Platforms
  • 3. Chapters Schedule Filter Types JDBC - Introduction JDBC Endpoint: Inbound vs Outbound JDBC Connector Attributes Data sources Shortcuts Results Data Structure JDBC - CE vs EE JDBC Transactions MEL - JDBC
  • 4. JDBC - Introduction  The Java Database Connectivity (JDBC) transport connects to any relational database that supports JDBC.  A JDBC inbound endpoint maps to an SQL SELECT statement while a JDBC outbound endpoint maps to an SQL SELECT, UPDATE, INSERT or DELETE statement.  Similar to the File transport, consumption of records needs to be simulated.  Schema definition CE Version: <xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jdbc http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd"> EE Version: <xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jdbc http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd">
  • 5. JDBC Endpoint: Inbound vs Outbound  A SELECT on a JDBC inbound endpoint is polling. This means that Mule will attempt to read records every so often from a given database table. In addition, Mule will only retrieve un-read records. In other words, a JDBC inbound endpoint will consume records.  Inbound Endpoints can only be configured for SELECT queries  A SELECT on a JDBC outbound endpoint is triggered by a Mule event. For example, this Mule event could have been created as a result of an HTTP request.  A JDBC outbound endpoint does not care if a record has been read or not. It will retrieve all records matching the SELECT’s WHERE clause.  Outbound Endpoints can be configured for any allowed (as set by database) query.
  • 6. JDBC Connector Attributes  JDBC transport requires configuration of the JDBC connector. In the connector, we must point the dataSource-ref attribute to a Spring bean and the Spring bean would configure a class which implements the javax.sql.DataSource interface. Configuring a DataSource usually involves setting the URL, JDBC driver, username and password bean properties.  JDBC connector we can also add the queries that are to be executed by the JDBC inbound and outbound endpoints.  Each query is represented as a child element in the JDBC connector element. Moreover, each query needs a key (which is a descriptive name for the query) as well as the actual SQL query itself.  There are three types of queries available:  Read queries are SELECT SQL statements bound to an inbound or an outbound endpoint.  Write queries are INSERT or UPDATE SQL statements bound to an outbound endpoint.
  • 7. JDBC Connector Attributes (Contd)  Acknowledgement queries are executed immediately after a read query. This type of query is identified with the same name as the read query together with an '.ack' suffix. An acknowledgement query is normally used to mark the previously selected rows as having been processed or consumed. This type of query is usually an UPDATE statement.  Other properties that are set on the connector but are optional are:  pollingFrequency: The frequency to poll the database for new records, in milliseconds.  queryRunner-ref: The name of the class to execute queries. The default class is org.apache.commons.dbutils.QueryRunner.  resultSetHandler-ref: The name of the class used to pass query results back. The default class is org.apache.commons.dbutils.handlers.MapListHandler converts the result set to an object. Eg: <jdbc:connector dataSource-ref="ordersDB" name="salesDB“ pollingFrequency="1000">
  • 8. JDBC Connector Attributes (Contd) <jdbc:query key="getTest“ value="SELECT ID, TYPE, DATA, ACK, RESULT FROM TEST WHERE TYPE =#[map-payload:type] AND ACK IS NULL"/> <jdbc:query key="getTest.ack“ value="UPDATE TEST SET ACK = #[map-payload:NOW] WHERE ID = #[map-payload:id] AND TYPE =#[map-payload:type] AND DATA = #[map-payload:data]"/> <jdbc:query key="writeTest“ value="INSERT INTO TEST (ID, TYPE, DATA, ACK, RESULT) VALUES (NULL, #[map-payload:type], #[map-payload:payload], NULL, NULL)"/> </jdbc:connector> <flow name="..."> <jdbc:inbound-endpoint queryKey="getTest"/> ... <jdbc:outbound-endpoint queryKey="writeTest"/> </flow> <spring:bean class="org.springframework.jdbc.datasource. DriverManagerDataSource" id="ordersDB"> <spring:property name="driverClassName" value="com.mysql.jdbc.Driver"/> <spring:property name="url" value="jdbc:mysql://localhost:3306/orderdb"/> <spring:property name="username" value="myName"/> <spring:property name="password" value="myPwd"/> </spring:bean>
  • 9. Datasources Shortcuts  Mule 3.2 and later versions provide shortcuts for configuring a number of data sources including Derby, MySQL, Oracle and PostgreSQL: Eg: MySql: <jdbc:mysql-data-source database="mule" name="dataSource" password="secret" user="mysql"/> Derby: <jdbc:derby-data-source create="true" database="mule" name="dataSource"/> Oracle: <jdbc:oracle-data-source instance="mule" name="dataSource" password="secret" user="oracle"/>
  • 10. Results Data Structure  Query(SELECT statement) result, is an array of Maps  Each Map represents a record in the database and each entry in the Map represents a column in the record.  Using a Groovy expression is one way of retrieving the required data from the result set.
  • 11. JDBC - CE vs EE  The EE version of the JDBC transport offers a number of extra features over and above the features provided by the CE version. List of JDBC features offered by both versions:  Select queries with acknowledgement  Basic Insert/Update/Delete: Single row Insert/Update/Delete  Basic Stored Procedure Support: Supports only in parameters  Unnamed Queries: Queries can be invoked programmatically  Flexible Data Source Config: Can configure data sources through JNDI, XAPool or Spring.  Transactions  Outbound Select Query: Retrieve records using the select statement configured on outbound endpoints.  The EE JDBC transport also offers:  Large Dataset Retrieval: Allows the consumption of records in smaller batches thus allows the retrieval of large datasets.
  • 12. JDBC - CE vs EE (Contd)  Batch Insert/Update/Delete: Batch inserts/update/delete improve the performance of the JDBC transport considerably when large datasets need to be inserted/updated.  Advanced Transformers: These transformers include XML and CSV transformers.  Advanced Stored Procedures: Allows both in and out parameters.
  • 13. JDBC Transactions  Similar to JMS, the JDBC transport has support for single resource JDBC transactions. This is configured using the jdbc:transaction element as seen in the following example. Eg: <jdbc:connector dataSource-ref="jdbcDataSource" name="jdbcConnector"> <jdbc:query key="JobSearch“ value="SELECT Id,Task FROM Jobs WHERE Started IS NULL"/> <jdbc:query key="JobSearch.ack“ value="UPDATE Jobs SET Started=#[function:now] WHERE Id = #[map- payload:Id]"/> <jdbc:query key="InsertNewTask“ value="INSERT INTO Tasks (JobId,Task) VALUES (#[map-payload:Id],#[map- payload:Task])"/> </jdbc:connector> <flow name="JdbcSimpleTransaction"> <jdbc:inbound-endpoint queryKey="JobSearch"> <jdbc:transaction action="ALWAYS_BEGIN"/> </jdbc:inbound-endpoint> <component class="com.mulesoft.MyCustomComponent"/> <jdbc:outbound-endpoint queryKey="InsertNewTask"> <jdbc:transaction action="ALWAYS_JOIN"/> </jdbc:outbound-endpoint> </flow>
  • 14. MEL - JDBC Arrays and Lists  Literal forms for Lists ({item1, item2, . . }) and Arrays ([item1, item2, . . ]). Using the literal form the payload can be set by: Eg: Message.payload = ({‘foo’, ‘bar’, ‘dog’}) This will set the payload to a list of 3 elements. In the MEL, as in many other languages, indexes start at 0. Eg: Message.payload[2] results in ‘dog’  Arrays and Lists in Java must specify the type of their contents, but in MEL they are untyped.  The MEL supplies the correct type when we use them – either by determining it at compile time or coercing the array to the correct type at run time. Eg: Valid MEL: Message.payload = ({‘foo’, 1234, 1234.56}) Mule Maps  The MEL has built-in support for maps.  Maps are used to store "associative arrays" or "dictionaries". Eg: Message.payload = [ "Brett":100,"Pete":"Did not finish", "Andrew":86.879]
  • 15. MEL – JDBC (Contd)  MEL provides a very clean way to access the values in a map.  Use square brackets to address the key:  Eg: Message.payload ["Pete"] => Output: 'Did not finish'  The MEL supplies the correct type when we use them – either by determining it at compile time or coercing the array to the correct type at run time. If there is no value, the operation returns a Null. Arrays of Maps  The very common Mule Payload is an array of maps Eg: {['destination':'SFO', 'price':500]}. Price of SFO can be found by Message.payload[0]['price']  The following example shows how to check the size of an array in a WHEN statement, evaluates to true if the array is not empty: Eg: <when expression="message.payload.size() > 0"> This can be used to avoid NullPayloads when potentially asking for something that the database didn't return any values for.