Mega Code Archive

 
Categories / Java / Spring
 

Deal With Binary Stream With LobHandler

File: context.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"     "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"       destroy-method="close">   <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>   <property name="url" value="jdbc:hsqldb:mem:."/>   <property name="username" value="sa"/>   <property name="password" value=""/> </bean> <bean id="employeeDao" class="EmployeeDaoImpl">   <property name="dataSource" ref="dataSource"/> </bean> </beans> File: EmployeeDaoImpl.java import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.SqlOutParameter; import org.springframework.jdbc.core.SqlParameter; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback; import org.springframework.jdbc.core.support.AbstractLobStreamingResultSetExtractor; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.jdbc.object.MappingSqlQuery; import org.springframework.jdbc.object.SqlUpdate; import org.springframework.jdbc.object.StoredProcedure; import org.springframework.jdbc.support.lob.DefaultLobHandler; import org.springframework.jdbc.support.lob.LobCreator; import org.springframework.jdbc.support.lob.LobHandler; import org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor; import org.springframework.util.FileCopyUtils; //import org.apache.commons.dbcp.BasicDataSource; public class EmployeeDaoImpl extends JdbcDaoSupport{      protected void initDao() throws Exception {     super.initDao();     getJdbcTemplate().setNativeJdbcExtractor(new SimpleNativeJdbcExtractor());   }   private LobHandler lobHandler = new DefaultLobHandler();      public void addImageForEmployee(final Integer employeeId, final InputStream in) throws IOException {     final int imageSize = in.available();     getJdbcTemplate().execute("INSERT INTO employee (id, image) VALUES (?, ?)",         new AbstractLobCreatingPreparedStatementCallback(lobHandler) {           protected void setValues(PreparedStatement ps, LobCreator lobCreator)               throws SQLException, DataAccessException {             ps.setInt(1, employeeId);             lobCreator.setBlobAsBinaryStream(ps, 2, in, imageSize);           }         });   }   public void getImage(Integer id, final OutputStream out) {     getJdbcTemplate().query("SELECT image FROM employee WHERE id = ?",         new AbstractLobStreamingResultSetExtractor() {           protected void streamData(ResultSet rs) throws SQLException, IOException {             FileCopyUtils.copy(lobHandler.getBlobAsBinaryStream(rs, 1), out);           }         });   }     } class Employee {   private Integer id;   private Name name = new Name();   private Integer age;   private Sex sex;   private Address address = new Address();   private List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>();   public Employee() {   }   public Employee(String firstName, String lastName) {     this.getName().setFirst(firstName);     this.getName().setLast(lastName);   }   void setId(Integer id) {     this.id = id;   }   public Integer getId() {     return id;   }   public Address getAddress() {     return address;   }   public Integer getAge() {     return age;   }   public void setAge(Integer age) {     this.age = age;   }   public Name getName() {     return name;   }   public List<PhoneNumber> getPhoneNumbers() {     return Collections.unmodifiableList(phoneNumbers);   }   public void addPhoneNumber(PhoneNumber phoneNumber) {     this.phoneNumbers.add(phoneNumber);   }   public void removePhoneNumber(PhoneNumber phoneNumber) {     this.phoneNumbers.remove(phoneNumber);   }   public void removePhoneNumber(int index) {     this.phoneNumbers.remove(index);   }   public Sex getSex() {     return sex;   }   public void setSex(Sex sex) {     this.sex = sex;   } } abstract class Sex {   public static final Sex MALE = new Male();   public static final Sex FEMALE = new Female();   public boolean equals(Object o) {     if (o == null) {       return false;     }     return getClass().equals(o.getClass());   } } class PhoneNumber { } class Address {   private String line1;   private String line2;   private String city;   private String state;   private String zip;   public void setLine1(String line1) {     this.line1 = line1;   }   public String getLine1() {     return this.line1;   }   public void setLine2(String line2) {     this.line2 = line2;   }   public String getLine2() {     return this.line2;   }   public void setCity(String city) {     this.city = city;   }   public String getCity() {     return this.city;   }   public void setState(String state) {     this.state = state;   }   public String getState() {     return this.state;   }   public void setZip(String zip) {     this.zip = zip;   }   public String getZip() {     return this.zip;   } } final class Male extends Sex {   protected Male() {   } } final class Female extends Sex {   protected Female() {   } } class Name {   private String first;   private String middle;   private String last;   public void setFirst(String first) {     this.first = first;   }   public String getFirst() {     return this.first;   }   public void setMiddle(String middle) {     this.middle = middle;   }   public String getMiddle() {     return this.middle;   }   public void setLast(String last) {     this.last = last;   }   public String getLast() {     return this.last;   } } File: Main.java import java.util.Date; import java.util.GregorianCalendar; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; class Main {   public static void main(String args[]) throws Exception {     ApplicationContext ctx = new ClassPathXmlApplicationContext(         "context.xml");     EmployeeDaoImpl ws = (EmployeeDaoImpl) ctx.getBean("employeeDao");   } }                     Spring-DealWithBinaryStreamWithLobHandler.zip( 3,662 k)