博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模仿mybatis,用jdk proxy实现接口
阅读量:5332 次
发布时间:2019-06-15

本文共 1100 字,大约阅读时间需要 3 分钟。

在mybatis中,我们都只需要定义一个mapper接口,但并不需要对它进行任务实现。只要有对就的mapper.xml文件就可以访问数据库。那么,没有接口的访问是如何实现的呢。

答案就是JDK proxy.mybatis统一用代理类来写接口实现。在代理类中,实现读取配置文件并访问数据库存的操作。

现在我们来模拟一下,如何用代理类实现接口

1.定义接口,一个求各的方法

public interface FacadeCalculate {    int add(int a,int b);}

2.定义一个handle类,继承InvocationHandler。在invoke方法中,返回两个参数相加的值。这里只是一个示例,并没有作验证和错误处理。

public class TraceHandler implements InvocationHandler {    @Autowired    private Calculate calculate;    /**     * Constructs a TraceHandler     */    public TraceHandler() {    }    public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {        return Integer.parseInt(args[0].toString()) + Integer.parseInt(args[1].toString());    }}

3.调用 

public static void main(String[] args)    {        InvocationHandler handler = new TraceHandler();        FacadeCalculate proxy = (FacadeCalculate) Proxy.newProxyInstance(FacadeCalculate.class.getClassLoader(),                new Class[] { FacadeCalculate.class }, handler);        Integer result= proxy.add(2,3);        System.out.println(result);    }

输出值会是5.

转载于:https://www.cnblogs.com/Gyoung/p/5273941.html

你可能感兴趣的文章
微信小程序开发7-JavaScript脚本
查看>>
leetcode-78-子集
查看>>
LINUX进程小结
查看>>
公告会看门道:四个不同的厨师和史蒂夫·乔布斯
查看>>
HDU 1983 BFS&&DFS
查看>>
c++开源项目汇总
查看>>
python yield返回多个值
查看>>
每日站立会议及今日份任务
查看>>
R12 付款过程请求-功能和技术信息 (文档 ID 1537521.1)
查看>>
洛谷 4364 [九省联考2018]IIIDX
查看>>
洛谷 3870 [TJOI2009]开关
查看>>
【牛客-16643】统计数字(简单排序)
查看>>
www.aaa.com/index.html跳转www.aaa.com设置
查看>>
ssdb binlog机制 存疑
查看>>
Vue 2.0 组件库总结
查看>>
HDU5033 Building(单调栈)
查看>>
Kafka 安装配置 及 简单实验记录
查看>>
想成为程序猿?28个程序员专供在线学习网站(转)
查看>>
font-style: oblique文字斜体,display:inline-block显示间隙
查看>>
css设置滚动条并显示或隐藏
查看>>