Mybatis入门+面试总结

103 阅读4分钟

前置学习:代理模式

你在生活中很多情况都存在代理,你买鞋不能直接去鞋厂买,而是需要去一些代理商,像安踏,李宁这样的门店或者旗舰店去买,你租房可能需要去找到中介,这就是代理,实际开发中项目需要用到代理模式的类型,比如你开发一个商城项目,你可能需要给用户发送短信通知,这种情况下,你不能直接调用三大运营商的接口来发送你的这个短信,你需要通过一个代理,这种代理就是第三方公司,比如阿里腾讯的一些短信服务,通过购买他们来服务调用接口发送短信。

代理模式的作用

1、控制目标对象的访问,比如说你租房,中介会阻止你去和房东直接交流
2、增强功能,比如说你租房,中介会帮你把房间装修一下或者打扫一下

代理模式的分类

1、静态代理:
    代理模式的一种,具备以下特点
        目标对象必须实现接口
        目标对象和代理对象实现同一个业务接口
        代理对象在程序运行前就已经存在
        静态代理能够灵活的进行目标对象的切换,却无法进行功能的灵活的处理,所以我们这里上动态代理 
2、动态代理
    2.1 JDK动态代理
        目标对象必须实现业务接口
        代理对象不需要实现接口
        动态代理的对象在程序运行前不存在,在程序运行时动态的在内存中构建
        动态代理灵活的进行业务功能的切换
    2.2 CGLib动态代理

静态代理的实现思路

面向接口编程,将接口对象导入代理类中,调用多态的方式可以实现一个接口,多个实现类复用。比如刘德华和周润发都实现了表演的接口,我这边直接调用表演接口的实现类对象,然后就可以在那边通过传入不同的参数来实现不同的功能。

动态代理的实现思路

1JDK动态代理的实现:
    使用现有的工具类完成JDK动态实现
    1.1准备好共有的接口,比如表演这个接口,以及接口的实现类,比如刘德华表演,周润发表演
    1.2做一个代理工厂类,传入表演的接口对象,在工厂类中写一个返回动态代理对象的方法,在方法中调用Proxy类NewProxyInstance方法,然后在这个方法中传入目标对象,也就是我们表演接口的类加载器,以及我们接口的方法
    组,再传入我们代理对象自己的一些实现增强,调用目标对象的目标方法这里的思路都是利用底层的反射来做的,原
    理可以不追究的太深
    1.3最后生成我们的动态代理对象,传入不同的目标对象接口就可以实现动态代理增强了
2CGLib动态代理的实现:
    他的原理其实是通过子类继承目标对象的方式来实现的,所以目标对象不能被finalstatic修饰
    2.1添加依赖,spring的core包其实默认就包含了
    2.2也是创建一个factory的工厂类,然后再工厂类中传入目标对象,然后再做一个增强的方法,最后再写一个返回
    代理对象的方法,在这个方法中会调用我们的增强方法,然后返回我们的目标对象,最后拿到代理对象调用方法

进入Mybatis的学习

Mybati是sapache之前的一个开源项目ibatis改名而来,主要的功能就是优化了对数据库的访问层,专注于sql语句。

Mybatis的使用步骤

1、添加Mybatis的依赖
2、添加配置文件
3、添加jdbc.properties的属性文件(用来配置数据库)
4、添加SqlMapConfig.xml文件,这里面是用来写sql语句的
5、添加相对应的业务Mapper类,里面写上对应的接口