本资料是针对某院校某年考试的复习知识点
一、MyBatis基础
1.请简述MyBatis框架的工作流程?(p4)
- MyBatis读取配置文件和映射文件
- MyBatis根据配置信息和映射信息生成SqlSessionFactory对象,然后用该对象创建MyBatis的核心对象sqlSession。
- 开发者通过调用sqlSession对象完成数据库的操作(补充一点底层小知识:其实真正操作数据库的不是sqlSession(辅导员),而是Executor执行器接口(班长)操作数据库,该接口有两个实现类,一个是普通实现类,一个是缓存执行器)
- Executor执行器处理SQL信息
2.一般使用什么模式创建SqlSessionFactory对象?(p5)
答: 一般使用单例模式创建SqlSessionFactory对象,即每一个数据库对应一个SqlSessionFactory对象。(SqlSessionFactory存在于Mybatis应用的整个生命周期,重复创建SqlSessionFactory对象会造成数据库资 源的过度消耗。)
二、MyBatis进阶
1.MyBatis提供了几种不同类型的数据源?(p28)
答:
- UNPOOLED,非连接类型,该类型数据源只是在每次请求时才会打开和关闭连接。它适用于对性能要求不高的简单应用程序
- POOLED,连接池类型,这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。它适用于对性能有一定要求的应用程序。
- JNDI ,这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
三、MyBatis的关联映射
1.使用MyBatis处理一对一的表关系,需要使用哪个标签,有哪些重要属性?(p37)
答:
- association标签
- property,用于所映射的类
- javaType,用于所映射的类的属性的类型
- jdbcType,用于指定数据表中对应的字段的类型
2.使用MyBatis处理一对多的表关系,需要使用哪个标签?(p43)
答:collection标签
四、动态SQL和注解
动态SQL让MyBatis框架会更加的灵活,让开发者对不同的SQL语句进行拼接,处理更复杂的业务
1.MyBatis有哪些常用的动态SQL元素?(P58)
答:
- if相当于判断语句,常用于单条件判断。
- choose,相当于判断语句,常用于多条件分支判断。
- trim,辅助元素,用于处理一些拼装问题
- foreach,相当于循环语句,在in语句等列举条件时常用
2.choose,when,otherwise与java哪些关键字对应(p62)
- choose对应switch
- when对应case
- otherwise对应default
3.MyBatis常用注解和XML配置标签的对应关系以及功能描述?(p73)
注解 | XML标签 | 描述 |
---|
@Select | <select> | 查询操作 | @Insert | <insert> | 插入操作 | @Update | <update> | 修改操作 | @Delete | <delete> | 删除操作 | @Param | | 传入参数 |
五、MyBatis缓存处理
1.MyBatis支持哪些级别的缓存?(P82)
- 一级缓存,它是SqlSession级别的缓存
- 二级缓存,它是Mapper级别的缓存,多个SqlSession去操作同一个Mapper的SQL语句,二级缓存是跨SqlSession的,多个SqlSession可以共用二级缓存。
总结:在实际应用中,一级缓存是默认开启的,二级缓存需要手动开启。【一级缓存好比软工5班只能在自己班里活动,二级缓存则可以好比一个万能班级可以在多个班级里活动。(作者的理解)】
六、Spring基础
1.Spring框架有哪些优势和特点?(P98)
- 降低耦合度,方便开发,通过IOC(控制反转),把对象的创建交给Spring去管理。
- 支持AOP切面编程,对程序进行权限拦截、安全监控等操作,减少传统方法OOP带来的冗余(假如我现在想想在一个聊天室的软件里加一个敏感词替换为***的功能,又不想改源码,就可以使用AOP)
2.Spring的功能体系?(p98)
答:spring的功能体系
3.什么是AOP?(P100)
答:AOP提供了面向切面编程的编程实现,允许定义方法拦截器和切入点对代码解耦。
七、使用Spring管理Bean
1.Bean标签有哪些属性以及属性的描述?(P116)
答:
参考链接
2.Spring有哪些常用注解?(P132)
答:
注解 | 描述 |
---|
@Component | 指定一个普通的Bean | @Scope | 指定Bean实例的作用域 | @Value | 指定Bean实例的注入值 |
八、 Spring的AOP
1.AOP的XML配置有哪些常用标签?(p144)
答:
2.AOP的常用注解有哪些?(P148)
注解名称 | 描述 |
---|
@Aspect | 指定切面 | @After | 指定后置通知 | @AfterReturning | 指定返回通知 | @AfterThrowing | 指定异常通知 |
3.请解释下面代码里的注解(p150)
@Aspect
@Order(1)
public class Aspect01{
@Pointcut("execution(*com.qfedu.demo02.UserServiceImpl.*(..))")
public void pointcut(){
}
@Before("pointcut()")
public void before(){
System.out.println("这是Aspect01的前置通知!!");
}
@after("pointcut()")
public void after(){
System.out.println("这是Aspect01的后置通知!!");
}
}
九、Spring的jdbc
1.请谈谈Spring JDBC与MyBatis的区别(P166)
答:
- spring jdbc是对jdbc api的简单封装,而MyBatis是采用了ORM(对象关系映射)的思想,对jdbc技术的高度封装。
- springjdbc性能要比MyBatis快一点,适合管理域的sql语句;而MyBatis可以对sql语句进行批量管理,更适合在业务域使用
- MyBatis的耦合度比springjdbc低很多(MyBatis是把sql写在配置文件里,而springjdbc是把sql写在代码里的)
2.JDBCTemplate类的哪个方法可以DML操作,什么是DML?(P176)
答:
DML是对数据库的添加、删除、修改。***update()***方法用于实现DML语句操作。
(扩展:DQL是数据查询语言,JDBCTemplate类有queryXxx用于数据库查询语句
DDL是数据定义语言,JDBCTemplate类一般用execute执行DDL语句)
十、Spring管理数据库事务
1.请说说Spring声明式事务的注解有哪些?(P198)
答:
属性 | 描述 |
---|
timeout | 用于指定事务的超时时间 | readonly | 用于指定事务是否为只读 |
十一、Spring MVC基础
1.请说说@PathVariable注解是用来干什么的?(P217)
答:用于获取URL中的动态参数,支持动态URL访问并可以将请求URL中的动态参数映射到功能处理处理方法的形参上去。【如何理解:
假如前端有一个http请求的url是这样:http://localhost:8080/test/xuSong/
后台如何拿到xuSong这个参数值呢,就可以使用PathVariable注解,
@RequestMapping(value="/test/{name}")
@PathVariable(value=“name”)】
2.请说说@RequestHeader注解是用来干什么的?(P219)
答:
用于获取请求头中的数据,它可以将请求头中的数据映射到功能处理方法的形参上。
3.请解释下面某些代码的意思?(P223)
答:
@Controller
public class MyController01{
@RequestMapping(value="/defaultparm", method=RequestMethod.POST)
public void param1(HttpServletRequest request, HttpServletResponse response) throws IOException{
}
}
十二、Spring MVC的参数绑定
1.SpringMVC绑定POJO类型参数(p228)
十三、异常处理和拦截器
1.请说说HandlerExceptionResolver接口的resolverException方法的参数?(P241)
参数 | 说明 |
---|
HttpServletRequest | 请求对象 | HttpServletResponse | 响应对象 |
2.请说说拦截器的底层是用什么来实现的?(P246)
答:java动态代理
3.请说说HandlerInterceptor接口的三个方法?(P247)
答:
- preHandle()方法:在控制器方法之前执行,返回true表示继续执行,false表示拦截请求,不再向下执行。
- postHandle()方法:在控制器方法之后,返回ModelAndView之前执行。
- afterCompletion()方法:在执行完控制器之后执行。
十四、Spring MVC的高级功能
1.SpringMVC实现JSON交互
十五、SSM框架整合
1.开发中经常采用三层架构来搭建项目,什么是三层架构?(P279)
答:
界面层、逻辑层、数据访问层。分层次的目的是为了满足高内聚低耦合的编程思想
2.整合ssm框架需要编写哪些配置文件?(P282)
答:
- jdbc.properties/mybatis-config.xml(数据库连接信息文件)
- application.xml(Spring框架的配置文件)
- springMVC-config.xml(SpringMVC框架的配置文件)
- web.xml(完成Spring监听器和SpringMVC前端控制器的配置)
|