- Apache Commons DBUtils Tutorial
- DBUtils - Home
- DBUtils - Overview
- DBUtils - Environment Setup
- DBUtils - First Application
- Basic CRUD Examples
- DBUtils - Create Query
- DBUtils - Read Query
- DBUtils - Update Query
- DBUtils - Delete Query
- Apache Commons DBUtils Examples
- DBUtils - QueryRunner interface
- DBUtils - AsyncQueryRunner interface
- DBUtils - ResultSetHandler interface
- DBUtils - BeanHandler Class
- DBUtils - BeanListHandler Class
- DBUtils - ArrayListHandler Class
- DBUtils - MapListHandler Class
- Advanced DBUtils Examples
- DBUtils - Custom Handler
- DBUtils - Custom Row Processor
- DBUtils - Using DataSource
- DBUtils Useful Resources
- DBUtils - Quick Guide
- DBUtils - Useful Resources
- DBUtils - Discussion
MapListHandler Class
The org.apache.commons.dbutils.MapListHandler is the implementation of ResultSetHandler interface and is responsible to convert the ResultSet rows into list of Maps. This class is thread safe.
Class Declaration
Following is the declaration for org.apache.commons.dbutils.MapListHandler class −
public class MapListHandler extends AbstractListHandler<Map<String,Object>>
Usage
Step 1 − Create a connection object.
Step 2 − Get implementation of ResultSetHandler as MapListHandler object.
Step 3 − Pass resultSetHandler to QueryRunner object, and make database operations.
Example
Following example will demonstrate how to read a list of records using MapListHandler class. We'll read available records in Employees Table as list of maps.
Syntax
List<Map<String, Object>> result = queryRunner.query(conn, "SELECT * FROM employees", new MapListHandler());
Where,
resultHandler − MapListHandler object to map result sets to list of maps.
queryRunner − QueryRunner object to read employee object from database.
To understand the above-mentioned concepts related to DBUtils, let us write an example which will run a read query. To write our example, let us create a sample application.
Step | Description |
---|---|
1 | Update the file MainApp.java created under chapter DBUtils - First Application. |
2 | Compile and run the application as explained below. |
Following is the content of the Employee.java.
public class Employee { private int id; private int age; private String first; private String last; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getFirst() { return first; } public void setFirst(String first) { this.first = first; } public String getLast() { return last; } public void setLast(String last) { this.last = last; } }
Following is the content of the MainApp.java file.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.MapListHandler; public class MainApp { // JDBC driver name and database URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/emp"; // Database credentials static final String USER = "root"; static final String PASS = "admin"; public static void main(String[] args) throws SQLException { Connection conn = null; QueryRunner queryRunner = new QueryRunner(); //Step 1: Register JDBC driver DbUtils.loadDriver(JDBC_DRIVER); //Step 2: Open a connection System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); try { List<Map<String, Object>> result = queryRunner.query( conn, "SELECT * FROM employees", new MapListHandler()); System.out.println(result); } finally { DbUtils.close(conn); } } }
Once you are done creating the source files, let us run the application. If everything is fine with your application, it will print the following message.
Connecting to database... [{id=100, age=18, first=Zara, last=Ali}, {id=101, age=25, first=Mahnaz, last=Fatma}, {id=102, age=30, first=Zaid, last=Khan}, {id=103, age=33, first=Sumit, last=Mittal}]