尝试Mybatis中 BeanUtil怎么获取一个类中有其他的类的字段,比如获取User类中的Point类 的x,y,及其User类中的Date 字段
1.定义两个类分别实现Convert
2.覆盖这个接口的Convert方法,在这个方法中实现转换
3.在转换之前必须实现Convert
4.Point不同的是 返回的是Point
控制台为:
hrf
Tue May 14 00:00:00 CST 1996
x:1,y:1
package com.amaker.bean;
import java.util.Date;public class User {
private int id;
private String username;
private int age;
private Date born;
private Point p;
public Point getP() {
return p;
}
public void setP(Point p) {
this.p = p;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBorn() {return born;
}
public void setBorn(Date born) {
this.born = born;
}
}
package com.amaker.bean;
public class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
package com.amaker.bean;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.Converter;
public class PointConvert implements Converter {
@Override
public Object convert(Class cls, Object value) {
if(cls!=Point.class){
return null;
}
if(value instanceof String){
String[] str=((String) value).split(",");
Point point=new Point();
try {
BeanUtils.copyProperty(point, "x", Integer.parseInt(str[0]));
BeanUtils.copyProperty(point, "y", Integer.parseInt(str[1]));
} catch (Exception e) {
e.printStackTrace();
}
//与时间不同的是,这里返回Point
return point;
}
return null;
}
}
package com.amaker.bean;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
public class DateConverter implements Converter{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
@Override
public Object convert(Class cls, Object value) {
if(cls!=Date.class){
return null;
}
if(value instanceof String){
try {
return sdf.parse((String)value);
} catch (ParseException e) {
e.printStackTrace(); }
}
return null;
}
}