iBatis - for beginners
iBatis is a Data
persistence framework like Hibernate, JDO and EJB that
maps objects to SQL statements. It is a lightweight framework and persistence
API good for persisting POJOs( Plain OldJava Objects). iBatis is
different from Hibernate, JDO since it uses stored
procedures and existing SQL to handle database.
In this tutorial we are going to tell you iBatis configuration for a small application to run. As it is hard to explain everything in one go? so we have presented this tutorial into few separate examples. This example is all about to read data from the database and showing the results on your command prompt. In the second example you will learn to add more data into the database and after that third example is going to show you how to delete the data from the records using iBatis.
In this tutorial we are going to tell you iBatis configuration for a small application to run. As it is hard to explain everything in one go? so we have presented this tutorial into few separate examples. This example is all about to read data from the database and showing the results on your command prompt. In the second example you will learn to add more data into the database and after that third example is going to show you how to delete the data from the records using iBatis.
Now
in the first example that is going to show records from the database, we need a
database to run queries, so we are using MySQL 5.0 as database for this
example.
Here
we are retrieving contact information of few persons. Table structure of "Contact" table
is as given below:
Creating
Database in MySQL
DROP TABLE IF EXISTS `contact`;
CREATE TABLE `contact` ( `id` int(11) NOT NULL auto_increment, `firstName` varchar(20) default NULL, `lastName` varchar(20) default NULL, `email` varchar(20) default NULL, PRIMARY KEY (`id`) ); |
According
to this table "Contact" we have to make a POJO class. Our example
database "vin" has a"Contact" table,
which have four fields as:
- id
- firstName
- lastName
- email
Contact.java
public class Contact {
private String firstName; private String lastName; private String email; private int id; public Contact() {} public Contact( String firstName, String lastName, String email) { this.firstName = firstName; this.lastName = lastName; this.email = email; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } |
For
mapping configuration we need to create "SqlMapConfig.xml" which
specifies following things:
- Namespace prefix for
referring mapped statements.
- Our database will be
accessed using JDBC
- JDBC driver for MySQL
is "com.mysql.jdbc.Driver"
- Connection URL
is "jdbc:mysql://192.168.10.112:3306/vin"
- username and
password is "root" and "root"
- Our sql statement
mappings are described in "Contact.xml"
SqlMapConfig.xml
<?xml
version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings useStatementNamespaces="true"/> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/> <property name="JDBC.ConnectionURL" value="jdbc:mysql://192.168.10.112:3306/vin"/> <property name="JDBC.Username" value="root"/> <property name="JDBC.Password" value="root"/> </dataSource> </transactionManager> <sqlMap resource="Contact.xml"/> </sqlMapConfig> |
Mapping
file "Contact.xml" is given as follows which
is responsible for our application to execute SQL queries. Full code of Contact.xml is
as follows:
Contact.xml
<?xml
version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="Contact"> <!--- Showing all data of table --> <select id="getAll" resultClass="Contact"> select * from contact </select> </sqlMap> |
Now
to show data from database we have created a class "IbatisExample",
which reads configuration from SqlMapConfig.xml and then show
all data on your console output. Full source code ofIbatisExample.java is
as follows:
IbatisExample.java
import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import java.io.*; import java.sql.SQLException; import java.util.*; public class IbatisExample{ public static void main(String[] args) throws IOException,SQLException{ Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); //Output all contacts System.out.println("All Contacts"); List<Contact> contacts = (List<Contact>) sqlMap.queryForList("Contact.getAll",null); Contact contact = null; for (Contact c : contacts) { System.out.print(" " + c.getId()); System.out.print(" " + c.getFirstName()); System.out.print(" " + c.getLastName()); System.out.print(" " + c.getEmail()); contact = c; System.out.println(""); } } } |
To run this example you have to follow these steps :
- Create table Contact
in your MySQL database
- Download jar file of iBatis(ibatis-common-2.jar,ibatis-dao-2.jar,ibatis-sqlmap-2.jar) and
put it to your lib directory
- Set class path
- Create and
save Contact.java and compile it
- Create and
save Contact.xml
- now create SqlMapConfig.xml file
and finally
- create
IbatisExample.java and compile it
- Execute
IbatisExample file
Output:
Output
on your command prompt would be like as follows.
Comments
Post a Comment