MyBatis

1、啥是Mybatis?

答:半ORM框架、内部封装有JDBC

  通过XML、注解来配置和映射原生信息

  

2、MyBatis的优缺点?

答:优点:基于SQL语句编写

    与JDBC相比代码量减少

    与各种库都有很好的兼容

   缺点:编写工作量大

      依赖数据库、移植性差

3、MyBatis的适用场合?

答:专注SQL本身,足够灵活的DAO层解决方案。

4、#{}和${}的区别?

答:编译预处理、字符串替换,能够防止SQL注入。

5、当实体类中的属性名和表中的字段名不一样的时候怎么办?

答:在SQL中定义字段名别名,让字段名别名与实体类的属性名相同

  通过<resultMap>映射

6、模糊查询怎么写?

答;在Java代码中加入SQL通配符

  在SQL语句中拼接通配符,但会引起SQL注入。

7、一个Xml映射文件对应一个Dao接口。这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

答:Dao接口就是mapper接口。接口的全限定名就是映射文件中的namespace,接口中的方法就是映射文件中的id。接口内的参数就是传递给SQL的参数。

  namespace+id确定唯一的。

  不能重装。namespace+id确定唯一的寻址方式。Mybatis使用的是JDK动态代理的方式。

8、MyBatis是如何进行分页的?分页插件的原理是什么?

答:RowBounds分页

9、MyBatis是如何将SQL执行结果封装为目标对象并返回的?都有哪些映射形式?

答:使用<resultMAp>

  使用SQL列的别名功能,将列的别名作为对象属性名。

10、如何执行批量插入?

答:

13、如何获得自动生成的(主)键值?

答:insert()方法

14、在mapper中如何传递多个参数?

答:Dao层的函数

  使用@param

  多个参数封装成map

15、MyBatis的动态SQL有什么用?执行原理?有哪些动态SQL?

答:可以在Xml映射文件内,以标签的形式编写动态SQL,执行原理是根据表达式的值完成逻辑判断并动态拼接SQL的功能。

  trim、where、set、for each、if、choose、when、other wise、bind

16、Xml映射文件中,除了除了常见的select、insert、update、delete标签之外,还有哪些标签?

答:

17、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪?

答:需要手动写SQL。

18、一对一、一对多的关联查询?

答:

19、实现一对一有几种方式?

答:联合查询、嵌套查询

20、实现一对多有几种方式?

答:联合查询和嵌套查询

21、Mybatis是否支持延迟加载?实现原理是啥?

答:支持,仅支持assocation和collection。

  使用cglib。

22、Mybaits的一级缓存、二级缓存?

答:一级缓存:缓存的是HashMap,其作用域为Session

  二级缓存的话:作用域在Mapper(namespace),默认不打开

23、什么是Mybatis的接口绑定?有哪些实现方式?

答:

24、使用Mybatis的mapper接口调用时有哪些要求?

答:接口方法名和mapper.xml中的id相同

  接口方法的输入参数和mapper.xml中的parameterType相同

  接口方法的输出参数和mapper.xml中的resultType相同

  mapper.xml中的namespace就是mapper接口的类路径。

25、Mapper编写有哪些方式?

答:3种:接口实现类继承SqlSessionDaoSupport、

    使用MapperFactortBean、

    使用mapper扫描器

26、简述Mybatis的插件运行原理,以及如何编写一个插件?

答:仅针对ParameterHandler、ResultSetHandler、StatementHandler、Executor4个接口的插件。采用JDK动态代理。

  实现Mybatis的interceptor接口,并复写intercept()方法,然后在给插件中编写注解用于指定要拦截哪个接口的哪些方法。

posted @ 2021-10-07 22:03  bit01  阅读(61)  评论(0编辑  收藏  举报