面试题

1。哪些不同类型的IOC方式
  IoC,(Inverse of Control)控制反转,其包含两个内容:其一是控制,其二是反转。在程序中,被调用类的选择控制权从调用它的类中移除,转交给第三方裁决。
这个第三方指的就是Spring的容器。IoC另解,依赖注入
Dependency Injection),调用类对被调用类的依赖关系由第三方注入,以移除调用类对被调用类的引用。

2。java的9大内置对象
  request
  response  
  pageContext
  session
  application
  out
  config
  page
  exception

3。数据库里面的索引的约束是
  索引:加强了查询数据库的速度
  约束:可以设置主键约束比唯一约束更严格不能为空



4。mybatis是如何进行分页的?分页的插件的原理是什么?
  Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,
也可以使用分页插件来完成物理分页。

  分页插件的基础原理是是有mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截执行的SQL,让后重写SQL,根据dialect方言,添加对应的物理分页语言
和物理参数。


5.通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

  Dao接口即Mapper接口。接口的全限名,就是映射文件中的namespace的值;接口的方法名,就是映射文件中Mapper的Statement的id值;接口方法内的参数,就是传递给sql的参数。

  Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MapperStatement。在Mybatis中,每一个 <select>、<insert>、<update>、<delete>标签,都会被解析为一个MapperStatement对象。

  mapper接口的方法,是不能重载的,因为是使用全限名+方法名的保存和寻找策略。mapper接口的工作原理是jdk动态代理,mybatis运行时会使用jdk动态代理为mapper接口生成代理对象proxy,代理对象会拦截接口方法,转而执行mapperStatement所代表的SQL,让后将SQL执行结果返回。

  
posted @ 2019-10-28 15:26  小猪会拱菜  阅读(125)  评论(0编辑  收藏  举报