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

本文共 1050 字,大约阅读时间需要 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.

转载地址:http://otiel.baihongyu.com/

你可能感兴趣的文章
险些被吓到!白宇代言新品万元荣耀8X售价原因揭秘
查看>>
冲动是魔鬼!国庆换机如何不花冤枉钱?
查看>>
杭州街头惊现“梦想改造家”,ATM取款区变废为宝
查看>>
百度Apollo发布智能驾驶商业化解决方案
查看>>
2018年预测:GPU数据库或是未来的数据库统治者!
查看>>
「每天一道面试题」谈String和StringBuffer、StringBuilder区别
查看>>
统计局:去年12月天然气、电力生产增长较快
查看>>
房租抵扣个税不用再填房东信息 房东这下放心了吗?
查看>>
大湾区足球联赛港澳赛区上演进球大战
查看>>
又一巨头布局区块链,360区块猫上线,你不想拥有一只零代猫吗
查看>>
[译] Scala 类型的类型(一)
查看>>
Swift iOS : 代码分析DrawController
查看>>
Architecture(5)电商APP组件化探索
查看>>
Web全屏模式轻松掌握[局部元素全屏展示]
查看>>
超详细的Java面试题总结(三)之Java集合篇常见问题
查看>>
BCH升级在即,什么是OP_CHECKDATASIG和Canonical Transaction Ordering(一)
查看>>
Vue 中实现双向绑定的 4 种方法
查看>>
关闭tomcat报错Cannot allocate memory
查看>>
深圳行:1207-Day 1 - 到达
查看>>
mysqls为node.js而编写的sql语句生成插件 crud for mysql.
查看>>