首页 > Reflex ( 第 2 页)

用Apache的包那么舒服,自己也手痒了想写个玩玩

写了大概俩小时= = 期间遇到好多问题简直心态爆炸,好歹还是摸索出来了

颤抖的运行main方法、一次次的异常、刺眼的红字屡屡的嘲笑我

最后一次运行时。终于得出了我想要的结果,那一瞬间成就感简直爆炸,我能感受到大脑的多巴胺分泌迅速升高

 

不多说了贴代码:

 

期间遇到的问题:

一开始是想用ResultSet结果集直接提取数据,用getObject(属性名/列名)。

然后使用反射得到的set方法,将提取到的数据作为参数给T对象进行赋值,结果直接雪崩。

试了半天,把各种属性都打印出来验证了个遍才知道

这玩意把Oracle中的NUMBER类型用getObject()提取出来后是个BigDecimal类型,我也是醉了。必须要用getInt()才行

我实验的是传个oracle中ORCL数据库里的emp表进去,里边有个时间单位,放进java里应该是sql.Date这个类型

结果通过getObject提取出来后是个Timestamp类型,也不能直接往set方法里塞。必须要用getDate()方法

 

后来思路就是,既然我获取了T对象的setXXX方法,那我也可以获取ResultSet的getXXX嘛

然后使用

String rsFieldName = “get”+f.getType().getSimpleName().substring(0,1).toUpperCase()+f.getType().getSimpleName().substring(1);

得到getXXX的具体名字

然后再用Method类把ResultSet的方法具现化出来,注意这儿只能用ResultSet.class来获得类对象

把取出的变量赋值给Object,然后就能够使用T的set方法进行具体赋值了。

阅读全文

//这是自定义的注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface UseCase {
public int id();
public String name() default “无”;
}


//随便搞了个实验类,放俩方法分别加上我的自定义注解
public class PasswordUtils {
@UseCase(id=55,name=”闪电球”)
public static void funtion(String Password){

}
@UseCase(id=56)
public static void funtion_2(String Password){

}
}


public class TestUseCase {

public static void main(String[] args) {
//获取PasswordUtils类的所有方法
Method[] method= PasswordUtils.class.getDeclaredMethods();
//遍历所有方法
for(Method m : method){
//获取遍历出来的方法注解
UseCase uc = m.getAnnotation(UseCase.class);
//判断如果注解不等于空则输出打印其注解属性
if(uc != null){
System.out.println(uc.id()+”____”+uc.name());
}
}
}

}
输出结果为:
55____闪电球
56____无

阅读全文

BeanUtils位于org.apache.commons.beanutils.BeanUtils下面,其方法populate的作用解释如下:

完整方法:

BeanUtils.populate( Object bean, Map properties ),

这个方法会遍历map<key, value>中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。

我用了不同的一种思路,遍历的是属性,如果把属性作为key有对应的value值的话,就把值赋值给属性。

 

阅读全文
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00