java高级架构师教程-投鞭断流实现自动映射器Mapper
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java高级架构师教程-投鞭断流实现自动映射器Mapper,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2590字,纯文字阅读大概需要4分钟。
内容图文
图灵学院 java高级架构师教程-投鞭断流实现自动映射器Mapper
首先定义一个pojo。
再定义一个接口UserMapper.java。
publicinterfaceUserMapper{
publicUsergetUserById(Integerid);
}
接下来我们看看如何使用动态代理之投鞭断流,实现实例化接口并调用接口方法返回数据的。
自定义一个InvocationHandler。
importjava.lang.reflect.InvocationHandler;
importjava.lang.reflect.Method;
importjava.lang.reflect.Proxy;
publicclassMapperProxyimplementsInvocationHandler{
@SuppressWarnings("unchecked")
public<T>TnewInstance(Class<T>clz){
return(T)Proxy.newProxyInstance(clz.getClassLoader(),newClass[]{clz},this);
}
@Override
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
if(Object.class.equals(method.getDeclaringClass())){
try{
//诸如hashCode()、toString()、equals()等方法,将target指向当前对象this
returnmethod.invoke(this,args);
}catch(Throwablet){
}
}
//投鞭断流
returnnewUser((Integer)args[0],"zhangsan",18);
}
}
上面代码中的target,在执行Object.java内的方法时,target被指向了this,target已经变成了傀儡、象征、占位符。在投鞭断流式的拦截时,已经没有了target。
写一个测试代码:
publicstaticvoidmain(String[]args){
MapperProxyproxy=newMapperProxy();
UserMappermapper=proxy.newInstance(UserMapper.class);
Useruser=mapper.getUserById(1001);
System.out.println("ID:"+user.getId());
System.out.println("Name:"+user.getName());
System.out.println("Age:"+user.getAge());
System.out.println(mapper.toString());
}
output:
ID:1001
Name:zhangsan
Age:18
x.y.MapperProxy@6bc7c054
这便是Mybatis自动映射器Mapper的底层实现原理。
可能有读者不禁要问:你怎么把代码写的像初学者写的一样?没有结构,且缺乏美感。
必须声明,作为一名经验老道的高手,能把程序写的像初学者写的一样,那必定是高手中的高手。这样可以让初学者感觉到亲切,舒服,符合自己的Style,让他们或她们,感觉到大牛写的代码也不过如此,自己甚至写的比这些大牛写的还要好,从此自信满满,热情高涨,认为与大牛之间的差距,仅剩下三分钟。
如果你想了解更多关于java架构师的专业知识,可以一起交流:11604这里面都是同行05674,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
内容总结
以上是互联网集市为您收集整理的java高级架构师教程-投鞭断流实现自动映射器Mapper全部内容,希望文章能够帮你解决java高级架构师教程-投鞭断流实现自动映射器Mapper所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。