dao.xml =>>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- di for DriverManagerDataSourceMDS -->
<bean name="dm" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/navadb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- di or JdbcTemplate -->
<bean name="jtemp" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dm"/>
</bean>
<!-- di for SimpleJdbcInsert -->
<bean name="sji" class="org.springframework.jdbc.core.simple.SimpleJdbcInsert">
<constructor-arg ref="dm"/>
</bean>
<!-- di for implementation of dao -->
<bean name="dao" class="dao.BookDAOImpl">
<property name="tmp" ref="jtemp"/>
<property name="insert" ref="sji"/>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- di for DriverManagerDataSourceMDS -->
<bean name="dm" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/navadb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- di or JdbcTemplate -->
<bean name="jtemp" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dm"/>
</bean>
<!-- di for SimpleJdbcInsert -->
<bean name="sji" class="org.springframework.jdbc.core.simple.SimpleJdbcInsert">
<constructor-arg ref="dm"/>
</bean>
<!-- di for implementation of dao -->
<bean name="dao" class="dao.BookDAOImpl">
<property name="tmp" ref="jtemp"/>
<property name="insert" ref="sji"/>
</bean>
</beans>
Book.java =>>
package beans;
public class Book
{
private int id;
private String topic, author;
private float cost;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getTopic()
{
return topic;
}
public void setTopic(String topic)
{
this.topic = topic;
}
public String getAuthor()
{
return author;
}
public void setAuthor(String author)
{
this.author = author;
}
public float getCost()
{
return cost;
}
public void setCost(float cost)
{
this.cost = cost;
}
public Book()
{
}
public Book(int id, String topic, String author, float cost)
{
this.id = id;
this.topic = topic;
this.author = author;
this.cost = cost;
}
}
BookDao.java =>>
package dao;
import java.util.List;
import beans.Book;
public interface BookDAO
{
// this method will fetch a single book from the
// database
public abstract Book findBookById(int id);
// this method will fetch all the books from the
// database
public abstract List<Book> getAllBooks();
// this method will be used to store object of
// book inside database using simple-jdbc-insert
// class
public abstract void insertBookInDB(Book book);
}
BookDAOImpl.java =>>
package dao;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import beans.Book;
public class BookDAOImpl implements BookDAO
{
private JdbcTemplate tmp;
private SimpleJdbcInsert insert;
public JdbcTemplate getTmp()
{
return tmp;
}
public void setTmp(JdbcTemplate tmp)
{
this.tmp = tmp;
}
public SimpleJdbcInsert getInsert()
{
return insert;
}
public void setInsert(SimpleJdbcInsert insert)
{
this.insert = insert;
}
@Override
public Book findBookById(int id)
{
System.out.println("method of dao");
// create sql query
String sql = "SELECT * FROM BOOK WHERE id = ?";
// create query args
Object[] args =
{ id };
// create object of RowMapper
RowMapperImpl rm = new RowMapperImpl();
return tmp.queryForObject(sql, args, rm);
}
@Override
public List<Book> getAllBooks()
{
// create sql query
String sql = "select * from book";
// create object of row-mapper
RowMapperImpl impl = new RowMapperImpl();
//
return tmp.query(sql, impl);
}
@Override
public void insertBookInDB(Book book)
{
insert.setTableName("book");
// create a map to specify the column name
// and their recpective value
Map<String,Object> map = new
LinkedHashMap<String,Object>();
map.put("id",book.getId());
map.put("topic",book.getTopic());
map.put("author",book.getAuthor());
map.put("cost",book.getCost());
insert.execute(map);
}
}
RowMapperImpl.java =>>
package dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
import beans.Book;
public class RowMapperImpl implements RowMapper<Book>
{
@Override
public Book mapRow(ResultSet resultSet, int records)
throws SQLException
{
System.out.println("mapRow()");
System.out.println("Total records are "+records);
// create object of Book (book is a bean)
Book book = new Book();
// fetch data of column from the ResultSet and store
// it inside object of Book using setters
book.setId(resultSet.getInt("id"));
book.setTopic(resultSet.getString("topic"));
book.setAuthor(resultSet.getString("author"));
book.setCost(resultSet.getFloat("cost"));
// return the object of bean to the DAO
return book;
}
}
FetchObject.java =>>
package tests;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.EmptyResultDataAccessException;
import beans.Book;
import dao.BookDAOImpl;
public class FetchObject
{
public static void main(String[] args)
{
try
{
ClassPathXmlApplicationContext ctx = new
ClassPathXmlApplicationContext("dao.xml");
BookDAOImpl dao = (BookDAOImpl) ctx.getBean("dao");
// fetch the list of books from database using
// dao
List<Book> books = dao.getAllBooks();
//
for(Book book : books)
{
System.out.println(book.getId());
System.out.println(book.getTopic());
System.out.println(book.getAuthor());
System.out.println(book.getCost());
System.out.println();
}
}
catch(Exception e)
{
if(e instanceof EmptyResultDataAccessException)
{
System.out.println("invalid id");
}
}
}
}
Very helpful.. thanks a lot
ReplyDelete