SpringMVC架构理解
Spring MVC是,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
SpringMVC 核心组件
前端控制器 DispatcherServlet:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
处理器映射器 HandlerMapping:根据请求的URL来查找Handler
处理器适配器 HandlerAdapter:负责执行Handler
处理器 Handler:处理器,需要程序员开发
视图解析器 ViewResolver:进行视图的解析,根据视图逻辑名将ModelAndView解析成真正的视图(view)
视图View:View是一个接口, 它的实现类支持不同的视图类型,如jsp,freemarker,pdf等等
@Autowire 和 @Resource 的区别?
@Autowire是Spring开发的,而@Resource是jdk开发的
@Autowire是按照类型type来注解的,而@Resource是按照名称来的,如果名称找不到,那么就按照类型type
MyBatis执行原理
MyBatis中 # 与{ } 区别
#{}是预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理时 , 就 是 把 {}时,就是把时,就是把{}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性
MyBatis 中DAO接口的映射原理
Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦 截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。
MyBatis 中自增长值的获取
insert方法总是返回一个int值 ,这个值代表的是插入的行数。
如果采用自增长策略,自动生成的键 值在insert方法执行完后可以被设置到传入的参数对象中 。