Java反射有什么用

反射概念

简单来就在程序运行过程中得到对象的,class,field,method,这玩意到底有啥用?

用处Demo

通常在Dao框架中,save方法都是泛型参数
save(T t)


save(People people)
save(User user)
为什么我们不管放什么对象都能保存到数据库呢

实现原理

其实说白了这个问题,最后肯定还是这样插入

insert into tablename values(1,'a','b')

问题的关键就是如何生成这个SQL,这不就是反射的场景嘛
随便写了个Demo,这不就拿到了嘛,看到这也能明白注解是什么用的了,注解其实就是class中的一些元数据信息,比如类的元数据信息,字段的元数据信息,这样在反射的时候可以拿到类到底对应的数据库中的哪个字段,哪个表名,这样才能生成正确的SQL

public class TestRe {

    public static void main(String[] args) {
        People peopel = new People();
        peopel.setAge(1);
        Field[] fields = peopel.getClass().getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            try {
                System.out.println(fields[i].getInt(peopel));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }

    }
}


class People {

    int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

注解示例

import javax.persistence.*;

@Entity(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    
    @Column(name = "name")
    private String name;

    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wending-Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值