mybatis是内部封装jdbc,开发时只需要关注SQL语句本身,不需要去处理加载驱动、创建连接等过程,直接编写原生态的Sql语句,可以使用XML文件或注解配置和映射原生信息,避觉得jdbc代码和手动设置参数和获取结果集。
在mybatis中仅支持association关联对象和collection关联对象的延迟加载,association指的是一对一查询(联合查询和嵌套查询),collecti指的是一对多查。
在配置文件中,启用延迟加载功能:lazyLoadingEnabled = true
加载原理
使用CGLIB创建目标对象的代理对象,当调用目标方法时,就会进入拦截器方法,比如,调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,就会单独发送事先保存好的查询关联B对象的sql语句,把B的数据查询出来,调用a.setB(b),于是b属性就有值了,然后再完成方法调用。