Mybatis中 BeanUtil怎么获取一个类中有其他的类的字段,比如获取User类中的Point 的x,y

来源:互联网 发布:网络机顶盒停服怎么办 编辑:程序博客网 时间:2024/06/05 07:33

尝试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;

}

}

阅读全文
0 0