Mybatis为什么使用接口就可以调用了?

您所在的位置:网站首页 mybatis需要jdbc吗 Mybatis为什么使用接口就可以调用了?

Mybatis为什么使用接口就可以调用了?

2023-05-21 10:26| 来源: 网络整理| 查看: 265

Mybatis为什么使用接口就可以调用了? 答: 原始JDBC存在的问题: 1.频繁的获得或者关闭连接,然后使用数据库的连接池 2.sql语句还是在java代码中,不好维护,将sql交给xml Mybatis的解决办法: Mybatis中并没有Mapper接口的实现类,它忽略了实现类,直接对Mapper接口进行代理。mapper接口开发方法只需要程序员编写mapper接口,他会由mybatis框架根据接口的定义创建接口的动态代理的对象,直接根据他的对象名的类型获取的,之后直接创建mapper就可以了。

首先调用mybatis.io的Resourse.getResource解析.xml的配置文件

然后传入配置文件的输入流再获得 一个sqlsessionFactory对象

然后再用sqlsessionfactory获得一个sqlsession对象

(这里不像传统的jdbc直接执行SQL语句),而是用sqlsessioon.getMapper(Usermapper.class)获得代理对象

这里一直往下看的话,getMapper方法一直往下看的话,经过DefaultSqlSession、Configuration 类,中间会拿到knownMappers,他的key是Mapper的类型,value是一个MapperProxyFactory对象,这个对象中通过newInstance(mapperProxy)拿到mapperProxy的代理类。 拿到代理类后,他的动态代理的实现方法是通过JDK的动态代理,实现了InvocationHandler, Serializable接口,invoke(proxy, method, args, sqlSession)方法描述了代理要做的事情,代理做的事情,就是根据配置找到sql,判断是增删改查哪个,用对应的参数和语句封装,最后的话就是调用JDBC了,查询数据库,返回结果

拿到代理对象之后调用mapper中的查询方法就可以


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3