ORM框架类型自动转换原理

ORM框架在处理数据库查询时能自动将数据转换为指定类型,如List<Date>、Map<String, Integer>。其原理主要涉及Java反射机制,通过Method类获取方法的参数类型。在Hibernate框架中,通过ParameterizedType获取实际类型参数。由于编译后的字节码不包含集合参数化类型信息,所以不能直接通过对象的Class获取。因此,只能通过方法签名来获取实际的参数类型。" 110878987,7286491,CDN技术详解:静态加速与动态加速,"['CDN', '网络优化', '流媒体', '动态加速', '静态加速']
摘要由CSDN通过智能技术生成
     我们在使用ORM框架时,从数据库中查询数据,然后返回一个集合或者其他类型。但是,框架怎么知道我要获取的是什么类型的呢?比如:List<Date>、Map<String,Integer>等,框架怎么知道我要返回的集合中的元素类型是Date、String、Integer呢?可能你会说是使用反射的方式,话是不错,但说反射毕竟太笼统了。我们可以从Hibernate框架的源码中获取点经验,既然Hibernate可以实现自动类型转换,那我们为何不向前辈学习呢?! 自动类型转换的方法大致如下:

public class TestGer {

public static void main(String[] args) throws NoSuchMethodException, SecurityException {
Method method = TestGer.class.getMethod("test", List.class); //获取方法实例
Type[] types = method.getGenericParameterTypes(); //获得原始类型参数
ParameterizedType pt = (ParameterizedType) types[0];//获得的原始类型参数的是一个type类型的数组,数组的长度为实际方法参数的个数
System.out.println(pt.getActualTypeArguments()[0]);//打印实际类型参数
System.out.println(pt.getRawType());//打印原始类型
System.out.println("-------------------------");
Method method2 = TestGer.class.getMethod("testMap", Map.class);
Type[] type
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值