import java.lang.reflect.Field;
import java.lang.reflect.Method;
import com.UserInfo;
public class AutoSetJavaBean
{
/**
* 方法说明:
* @param args
* @throw
*/
public static void main(String[] args)
{
String a="";
try
{
a = AutoSetJavaBean.getFileds(UserInfo.class,"ui","rs");
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(a);
}
/**
* 方法说明:自动生成set javabean
* @param cla 要生成的类
* @param alias 类得别名
* @param rs resultSet别名
* @return
* @throws Exception
* @throw
* example
* UserInfo ui= new UserInfo();
ui.setFCode(rs.getString("fCode"));
ui.setFName(rs.getString("fName"));
*/
private static String getFileds(Class cla,String alias,String rs)throws Exception
{
if(cla==null){
throw new Exception("类不能为空!");
}
if(null==alias||"".equals(alias)){
throw new Exception("类 别名不能为空!");
}
if("".equals(rs)||null==rs){
rs="rs";
}
//得到get set方法列表
Method[] meths = cla.getDeclaredMethods();
// 得到当前类字段名称
Field[] fileds = cla.getDeclaredFields();
int ix=cla.toString().lastIndexOf(".");
String claStr=cla.toString().substring(ix+1,cla.toString().length());
StringBuffer sb=new StringBuffer(claStr+" "+alias+"= new "+claStr+"();");
sb.append("/r/n");
int methodLen=meths.length;//方法长度
int count=0;
for (int j = 0; j < methodLen; j++)
{
Method method=meths[j];
String mname=method.getName();
if(mname.indexOf("set")!=-1){//只取set方法
count++;
Field field = fileds[j-count];
sb.append(alias+".");
sb.append(method.getName());
sb.append("(");
sb.append("rs.get"+getType(field.getType().toString())+"(/"");
sb.append(field.getName()+"/")");
sb.append(");");
sb.append("/r/n");
}
}
return sb.toString();
}
private static String getType(String types){
String type="";
if(types.indexOf("short")!=-1){
type="Short";
}
if(types.indexOf("int")!=-1){
type="Int";
}
if(types.indexOf("String")!=-1){
type="String";
}
if(types.indexOf("BigDecimal")!=-1){
type="BigDecimal";
}
if(types.indexOf("float")!=-1){
type="Float";
}
if(types.indexOf("double")!=-1){
type="Double";
}
return type;
}
}