Java/Apache Common/Database Utils
Версия от 18:01, 31 мая 2010; (обсуждение)
Clone Object
import org.apache.rumons.beanutils.BeanUtils;
import java.util.Map;
import java.util.Date;
import java.util.List;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.GregorianCalendar;
public class BeanUtilsExampleV2 {
public static void main(String args[]) throws Exception {
BeanUtilsExampleV2 diff = new BeanUtilsExampleV2();
Movie movieBean = diff.prepareData();
// create a new Movie with the same properties
Movie newMovieBean = new Movie();
BeanUtils.copyProperties(newMovieBean, movieBean);
// Movie newMovieBean = (Movie)BeanUtils.cloneBean(movieBean);
// change its title
BeanUtils.setProperty(newMovieBean, "title", "Quills");
// and date
BeanUtils.setProperty(
newMovieBean,
"dateOfRelease",
new GregorianCalendar(2000, 0, 1).getTime());
// and director name
BeanUtils.setProperty(newMovieBean, "director.name", "Philip Kaufman");
// and director"s home number
BeanUtils.setProperty(
newMovieBean,
"director.contactNumber(Home)",
"3349084333");
System.err.println(BeanUtils.getProperty(movieBean, "title"));
System.err.println(BeanUtils.getProperty(movieBean, "director.name"));
System.err.println(BeanUtils.getProperty(
newMovieBean,
"director.contactNumber(Home)"));
}
private Movie prepareData() {
Movie movie = new Movie();
movie.setTitle("The Italian Job");
movie.setDateOfRelease(new GregorianCalendar(1969, 0, 1).getTime());
// sets the genre
Map genre_map = new HashMap();
genre_map.put("THR", "Thriller");
genre_map.put("ACT", "Action");
movie.setGenre(genre_map);
// creates the Director
Person director = new Person();
director.setName("Peter Collinson");
director.setGender(1);
Map director_contacts = new HashMap();
director_contacts.put("Home", "99922233");
director_contacts.put("Mobile", "0343343433");
director.setContactNumber(director_contacts);
movie.setDirector(director);
// create the actors
Actor actor1 = new Actor();
actor1.setName("Michael Caine");
actor1.setGender(1);
actor1.setWorth(10000000);
List actor1_movies = new ArrayList();
Movie movie2 = new Movie();
movie2.setTitle("The Fourth Protocol");
Movie movie3 = new Movie();
movie3.setTitle("Shiner");
actor1_movies.add(movie2);
actor1_movies.add(movie3);
actor1.setMovieCredits(actor1_movies);
Actor actor2 = new Actor();
actor2.setName("Margaret Blye");
actor2.setGender(2);
actor2.setWorth(20000000);
List actors = new ArrayList();
actors.add(actor1);
actors.add(actor2);
movie.setActors(actors);
return movie;
}
}
----------------------------------------------------------------------------
import java.util.List;
public class Actor extends Person {
public Actor() {
}
public List getMovieCredits() { return this.movieCredits; }
public void setMovieCredits(List movieCredits) {
this.movieCredits = movieCredits;
}
public long getWorth() { return this.worth; }
public void setWorth(long worth) { this.worth = worth; }
private List movieCredits;
private long worth;
}
----------------------------------------------------------------------------
import java.util.Map;
import java.util.List;
import java.util.Date;
public class Movie {
public Movie() {
}
public Date getDateOfRelease() { return this.dateOfRelease; }
public void setDateOfRelease(Date dateOfRelease) {
this.dateOfRelease = dateOfRelease;
}
public String getTitle() { return this.title; }
public void setTitle(String title) {this.title = title; }
public Person getDirector() { return this.director; }
public void setDirector(Person director) { this.director = director; }
public List getActors() { return this.actors; }
public void setActors(List actors) { this.actors= actors; }
public String[] getKeywords() { return this.keywords; }
public void setKeyWords(String[] keywords) { this.keywords = keywords; }
public Map getGenre() { return this.genre; }
public void setGenre(Map genre) { this.genre = genre; }
private Date dateOfRelease;
private String title;
private Person director;
private List actors;
private String[] keywords;
private Map genre;
}
----------------------------------------------------------------------------
import java.util.Map;
import org.apache.rumons.lang.builder.EqualsBuilder;
import org.apache.rumons.lang.builder.HashCodeBuilder;
import org.apache.rumons.lang.builder.ToStringBuilder;
public class Person {
public Person() {
}
public String getName() {
return this.name == null ? "NoName" : this.name; }
public void setName(String name) { this.name = name; }
public int getGender() { return this.gender; }
public void setGender(int gender) { // 0 - Indeterminate, 1 - Male, 2 - Female
this.gender = (gender > 2 || gender < 0) ? 0 : gender; }
public Map getContactNumber() { return this.contactNumber; }
public void setContactNumber(Map contactNumber) {
this.contactNumber = contactNumber;
}
/**public boolean equals(Object o) {
if(o == this) return true;
if(!(o instanceof Person)) return false;
Person otherPerson = (Person)o;
if(otherPerson.getName().equals(this.name) &&
otherPerson.getGender() == this.gender) return true;
return false;
}*/
public boolean equals(Object o) {
if(!(o instanceof Person)) return false;
Person otherPerson = (Person)o;
return new EqualsBuilder()
.append(name, otherPerson.getName())
.append(gender, otherPerson.getGender())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder(7, 51)
.append(name)
.append(gender)
.append(contactNumber)
.toHashCode();
}
public String toString() {
return new ToStringBuilder(this)
.append("Name", name)
.append("Gender", gender)
.append("Contact Details", contactNumber)
.toString();
}
private String name;
private int gender;
private Map contactNumber;
}
Map ResultSet to Object
import org.apache.rumons.dbcp.BasicDataSource;
import org.apache.rumons.beanutils.DynaBean;
import org.apache.rumons.beanutils.ResultSetDynaClass;
import java.util.Iterator;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class DynaBeansExampleV2 {
public static void main(String args[]) throws Exception {
Connection conn = getConnection();
PreparedStatement ps = conn.prepareStatement("SELECT * from movie, person " +
"WHERE movie.director = person.Id");
ResultSet rs = ps.executeQuery();
ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);
Iterator itr = rsdc.iterator();
while(itr.hasNext()) {
DynaBean bean = (DynaBean)itr.next();
System.err.println(bean.get("title"));
}
conn.close();
}
private static Connection getConnection() throws Exception {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost/commons");
bds.setUsername("root");
bds.setPassword("");
//bds.setInitialSize(5);
return bds.getConnection();
}
}
Use Mapped Object after database Connection close
import org.apache.rumons.dbcp.BasicDataSource;
import org.apache.rumons.beanutils.DynaBean;
import org.apache.rumons.beanutils.RowSetDynaClass;
import java.util.Iterator;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class DynaBeansExampleV3 {
public static void main(String args[]) throws Exception {
Connection conn = getConnection();
PreparedStatement ps =
conn.prepareStatement(
"SELECT * from movie, person " +
"WHERE movie.director = person.Id");
ResultSet rs = ps.executeQuery();
RowSetDynaClass rsdc = new RowSetDynaClass(rs);
conn.close();
Iterator itr = rsdc.getRows().iterator();
while(itr.hasNext()) {
DynaBean bean = (DynaBean)itr.next();
System.err.println(bean.get("title"));
}
}
private static Connection getConnection() throws Exception {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost/commons");
bds.setUsername("root");
bds.setPassword("");
// bds.setInitialSize(5);
return bds.getConnection();
}
}