Mybatis框架
1、什么是Mybatis?
Mybatis是整合JDBC、加载驱动、创建连接、创建statement等复杂过程,使开发者只关注sql语句本身,灵活度高
作为一个半ORM框架,Mybatis可以使用XML或注解来配置源生信息,通过配置pojo来映射数据库记录,避免JDBC所有手动设置的难题
2、Mybatis的优缺点
优点:基于SQL语句编程,使开发者开发重点集中开sql语句上,支持动态sql并且重用
支持整合spring框架,方便整合和管理
很好和各个数据库进行兼容
缺点:SQL语句编写量过大,和数据库有相关性因此移植性能差
3、#{}和${}区别
${}字符串替换,#{预编译}可以防止sql注入,提高安全性
4、通常一个mapper.xml文件,都会对应一个Dao接口,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
Mapper接口的工作原理是JDK动态代理,mybatis运行时会使用JDK动态代理为Mapper接口生成代理对象proxy,拦截相关方法通过全限定名+id进行匹配,后执行sql,将结果返回。不能重载,因为基于namepase+id来进行匹配
5、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
如果配置了namespace则可以,如果没有则不可以
原因是因为为Map
6、Mybatis如何进行分页的?
Mybatis使用RowBounds对象进行分页,也可以通过物理sql进行分页
7、Mybatis是如何将sql执行结果以封装目标对象进行返回的?有哪些映射形式?
第一种:resultMap标签
第二种:通过sql列别名
Mybatis是通过反射来进行赋值的,当对象不包含数据库的表数据时,无法进行赋值的
Spring框架
1、Spring是什么?
Spring是轻量级的Ioc和aop容器框架,目的简化企业开发,它使得开发者只关心业务需求,配置有3种:基于xml文件配置,基于注解配置,基于JAVA配置
有大致一下模块
1,Spring core:核心类库,IOC服务
2,Spring Context:提供框架式Bean访问方式,以及企业级功能
3, Spring AOP:AOP支持
4,Spring Dao:JDBC抽象,对数据库操作异常进行处理
5,Spring ORM:对现有的ORM提供框架支持
6,Spring Web:提供了基本的面向Web的综合特性
7,Spring MVC:面向Web应用的Model-Controller-View
2、Spring的优点
1、Spring属于低侵入,代码污染低
2、Spring的DI机制将对象交给框架管理
3、Spring提供了AOP编程支持
3、Spring的AOP理解
OOP为纵向关系,而AOP为横向关系,一般作为功能补充
那些与业务无关,但却对多个对象产生共同行为和逻辑,抽取并封装成一个可用模块并重用
AOP代理分为2种:
JDK接口动态代理 兄弟关系
CGLIB动态代理 父子关系
4、Spring的Ioc理解
控制反转,就是转移对象的控制权力,将对象的所有权力都交于spring框架
从而降低耦合
IOC的3种注入规则:1,setter注入 2,构造方法注入 3、注解注入
5、BeanFactiry和ApplicationContext有什么区别?
都是核心接口,都可以当做spring容器
BeanFactory是底层的接口,包含了各种Bean的定义,加载,配置,实例化,控制等依赖关系,采用的延迟加载规则,在使用的时候创建实例
而applicationContext属于一次性创建了所有Bean,这也是为什么在启动的时候比较慢
并且BeanFactory需要手动注册,而applicationcontext是自动
6、Bean生命周期
实例化-设置属性-确认是否实现封装接口-自定义处理-初始化-选择是否采取缓存等策略-清理确认-销毁
7、spring支持那几种bean的作用域
单例
多例
request 随着网络请求创建,随着完成失效
session 同上,随着时间失效而失效
global-session 全局作用域
8、Spring框架的单例Beans是线程安全的么?
Spring本身并没有对其做多线程封装处理,需要开发者自行搞定,
实际上,如果没有可变的状态,其实也可是线程安全的
单变化居多如:View Model对象则无法保证,浅显办法可以多态的改变Bean作用域
9、Spring如何处理线程并发问题
正常是单例,可以多例,可以采用ThreadLocal进行处理
处理规则是采用线程同步机制
10、Spring基于xml注入bean的几种方式
set方法
构造器
静态工厂注入
实例工厂**
11、Spring的自动装配
通过autowire来配置注入
在Spring框架xml配置中共有5中自动装配
1、no:默认的方式是不进行自动装配的
2、byName:通过bean的名称自动装配
3、byType:通过参数的数据类型自动装配
4、constuctor:利用构造函数进行装配,并且通过构造函数bytype进行匹配
5、autodetect:自动探测,如果有构造方法通过construct的方式自动装配,否则byType的方式自动装配
12、Spring框架都用了那些设计模式
2、单例模式
3、代理模式
4、模板模式
5、观察者模式
13、Spring事务实现方式和原理
1,事务种类
编程式事务管理
声明式事务管理建立与AOP之上