1.说一下mybatis的一级缓存和二级缓存?
一级缓存:基于PerpetualCache的HashMap本地缓存,其作用域为Session,当Session flush或close之后,该Session中所有缓存就将清空,默认打开一级缓存。
二级缓存 :与一级缓存机制相同。默认也是采用PerpetualCache,HashMap存储,不同在于其存储作用域为Mapper,并且可自定义存储源
2.mybatis有几种分页方式?
数组分页
sql分页
拦截器分页
RowBounds分页
3.mybatis总的#{}和${}的区别是什么?
#{}是预编译处理,mybatis在处理#{}时,会将sql中的#{}替换成?,就是把${}换成变量的值;
使用#{}可以有效的防止SQL攻击。
4,mybatis时ruhe进行分页的?分页插件的原理是什么?
mybatis使用RowBound对象进行分页,也可以直接编写sql实现分页,也可以使用Mybatis的分页插件
分页插件的原理:实现mybatis提供的接口,实现自定义插件,在插件的拦截方法内拦截执行的sql,然后重写sql。
5,mybatis的好处?
①mybatis把sql语句从java源文件中独立出来,放在单独的xml文件中编写,给程序带来了很大的便利
②mybatis封装了底层jdbc API的调用细节,并能自动将结果集转换成java Bean对象,大大简化了java数据库编程的重复工作
③因为mybatis需要程序员自己去编写sql语句,程序员可以结合数据库自身的特点灵活控制sql语句。
6,mybatis的缺点
SQL语句的编写工作量较大,尤其当字段多,关联表多时,对开发人员SQL语句的工地有一定要求。
SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库