2026/10/23 16:06:53

JavaEE期末高频考点:MyBatis、Spring、Spring MVC三大模块核心得分点解析

JavaEE期末高频考点:MyBatis、Spring、Spring MVC三大模块核心得分点解析 简介本资源是面向高校JavaEE课程学习者的期末复习题库聚焦MyBatis框架核心知识点的系统性巩固与应试训练覆盖ORM原理、SQL映射配置、事务管理、模糊查询安全、动态SQL及工作流程等关键考点。题库以标准四类题型填空、判断、选择、简答组织内容深度匹配教学大纲包含第1章初识MyBatis、第2章核心配置等模块每道题目均附详细解析便于自测、查漏与考前强化。资源为单文件docx文档结构清晰、排版规范41KB轻量易下载适合作为课堂补充、课后练习及期末冲刺资料。目前已有2646人学习下载内容紧扣实践痛点——如#{}与${}的安全差异、concat()函数的局限性、 命名空间作用、SqlSession事务提交要求等帮助学生扎实掌握MyBatis底层机制与开发规范。1. JavaEE期末考什么别再死背概念了这3个模块占分72%答错一道就丢5分JavaEE期末不是考你能不能默写resultMap的子元素顺序而是考你能不能在看到一段报错日志时立刻判断出是set没闭合、if里写了还是、或者Transactional根本没生效——这些才是阅卷老师手里的“扣分黑匣子”。整张卷子85%以上分值集中在MyBatis32%、Spring核心容器与Bean管理25%、Spring MVC执行流程15%三大模块其余AOP、动态SQL等属于“锦上添花型考点”但一旦出题就是多选/简答压轴题。尤其注意填空题第1空、判断题第3题、选择题第4题这三类位置常年固定为高频失分点而简答题几乎必考“工作原理类”描述比如“MyBatis怎么把XML里的select变成JDBC PreparedStatement”光写“读配置→建工厂→开Session”得一半分必须写出MappedStatement如何封装SQL参数、Executor如何调用StatementHandler才算踩中得分关键词。适合正在突击复习、手里有老师划的重点但总卡在“知道但写不全”的人——这份题库不是让你从零学是帮你把已知内容焊死在得分点上。2. MyBatis核心考点从delete到concat()5个必考陷阱题全拆解2.1 填空题高频考点命名空间、SQL注入、全局配置三连击考点本质考的是对MyBatis配置文件结构的肌肉记忆不是理解深度。第1章填空第1题“MyBatis的删除操作在映射文件中是通过配置【 】元素来实现的”——答案必须是delete不能写“delete标签”或“delete语句”。阅卷规则错一个字符全扣因为这是最基础的XML元素名。第1章填空第2题“mapper元素包含一个【 】属性”——答案是namespace不是name或id。这里埋了坑很多学生混淆mapper的namespace和sql的id但namespace是作用域标识id是代码片段标识二者不可互换。第1章填空第3题“使用MySQL中的【 】函数进行字符串拼接”——答案是concat()但要注意题干后半句“可以有效防止模糊查询时可能出现的SQL注入问题”是错误前提concat()本身不防注入它只是拼接函数真正防注入的是#{}占位符预编译机制。这道题考的是你敢不敢质疑题干——判断题第3题就直接问“concat()能否防注入”答案是“错”。提示所有填空题答案必须严格按题库原文填写delete带尖括号concat()带括号namespace全小写。写成DELETE、CONCAT、NameSpace一律0分。2.2 判断题致命误区事务提交、根元素、面向对象写法高频翻车现场学生凭直觉判断结果3道题全错。判断题第1题“mappers元素是配置文件的根元素”——错。根元素是configurationmappers只是它的子元素而映射文件Mapper.xml的根元素才是mapper。这里考的是两级配置文件结构mybatis-config.xml全局 vsUserMapper.xml映射。判断题第2题“引入lib目录全部JAR包即可运行”——错。必须排除mybatis-x.x.x-sources.jar和mybatis-x.x.x-javadoc.jar这两类源码包会导致ClassNotFoundException。实际部署只留mybatis-x.x.x.jar数据库驱动commons-logging。判断题第5题“SQL语句要以面向对象的写法书写”——错。MyBatis的SQL是标准SQL不是HQL#{id}是参数占位符不是对象属性调用。Hibernate才写from User u where u.name ?MyBatis写SELECT * FROM user WHERE id #{id}。2.3 选择题辨析难点D选项永远是“看起来对实则错”的陷阱答题心法先看D选项90%的“错误说法”题D就是答案。第1章选择题第1题“MyBatis的删除操作和添加操作一样也需要封装整个实体类”——D错。删除只需传入主键值如deleteById(Integer id)不需要new User()再setID而添加必须传完整实体类。这是MyBatis“半自动ORM”的体现查/删/改可按需传参不像Hibernate强制POJO。第1章选择题第2题“只需要将insert()方法改为update()方法即可”——D错。SqlSession.update()第一个参数是Mapper接口方法全限定名如com.dao.UserDao.updateUser不是简单改方法名且update()的第二个参数必须是包含更新字段的Map或实体类不能复用insert()的参数结构。第1章选择题第3题“使用concat()函数也无法防止SQL注入”——C错。concat()本身不参与预编译但若配合#{}使用如WHERE name LIKE CONCAT(%, #{keyword}, %)依然安全只有${}拼接CONCAT(%, ${keyword}, %)才危险。题干偷换概念把“函数能力”和“使用方式”混为一谈。2.4 简答题踩分点工作原理必须出现这4个关键词阅卷潜规则写满8条只给6分但漏掉以下任意1个关键词直接扣2分SqlSessionFactoryBuilder不是SqlSessionFactory前者是构建器后者是工厂MappedStatement必须写全称不能简写为MSExecutor强调其“动态生成SQL”的职责不是“执行SQL”StatementHandler它是Executor的下级组件负责真正调用JDBC正确答案示范1SqlSessionFactoryBuilder读取mybatis-config.xml解析出数据源、事务管理器等环境信息2SqlSessionFactory根据环境信息创建SqlSession3SqlSession调用ExecutorExecutor根据MappedStatement中定义的SQL模板和参数动态生成PreparedStatement4StatementHandler接管PreparedStatement设置参数并执行executeUpdate()5ResultSetHandler处理返回结果映射为Java对象。2.5 易错题这5个点90%考生当场写崩错在哪 → 为什么错 → 怎么答对填空第3题写CONCAT或concat不加括号→ 错因MySQL函数名区分大小写CONCAT()在Linux服务器报错题干明确写“MySQL中的【 】函数”函数名必须带括号表示调用动作。→ 答对严格写concat()小写括号这是SQL语法规范。判断题第4题认为“删除操作不用事务提交”→ 错因混淆了“自动提交模式”和“MyBatis事务控制”。即使数据库设为autocommittrueMyBatis仍要求显式调用sqlSession.commit()否则delete()执行后数据不落库。→ 答对所有增删改操作insert()/delete()/update()都必须commit()查select()除外。选择题第1题选Adelete元素实现删除却忽略D是更错的选项→ 错因多选题题干是“有关说法错误的是”A本身正确但题目要求选“错误说法”必须找D这种绝对错误项。→ 答对先扫一遍选项标记所有“绝对化表述”如“必须”“一样”“只需”这类90%是错误答案。简答题写“SqlSession执行SQL”却不提Executor→ 错因SqlSession是门面Facade真正干活的是Executor不写Executor等于没答出MyBatis的核心设计——解耦SQL执行与会话管理。→ 答对在“SqlSession创建后”之后必须接“Executor根据MappedStatement生成SQL”这是得分铁律。填空第5题写“Hibernate”而非“MyBatis”→ 错因题干说“当前主流的Java持久层框架之一”Hibernate是ORM框架但非“主流持久层”首选企业级项目MyBatis占比超60%且上下文全是MyBatis操作此处考的是框架定位认知。→ 答对紧扣题干动词“是……之一”答案只能是MyBatis这是唯一符合上下文逻辑的选项。3. Spring核心容器与Bean管理Component不是万能胶prototype才是真考点3.1 填空题核心参数scope、factory-bean、Repository的精准定位命题逻辑考你是否分得清“谁创建Bean”和“谁管理Bean生命周期”。第7章填空第1题“将一个Bean自动注入到其他Bean的【 】中”——答案是Property属性不是Field或Setter。因为Spring自动装配autowire默认按类型匹配属性名Autowired标注的是属性field不是方法setter。第7章填空第4题“对于【 】作用域的BeanSpring只负责创建”——答案是prototype。关键区别singleton单例由Spring全程托管生命周期创建→使用→销毁prototype只管new对象后续GC由JVM负责。题干“不再跟踪其生命周期”是prototype的官方定义。第7章填空第3题“【 】注解用于将DAO层类标识为Bean”——答案是Repository。注意不是Service业务层或Controller控制层这是Spring分层架构的硬性约定写错直接0分。3.2 判断题高频雷区Component标注位置、singleton实例数量血泪经验判断题第1题是送分题也是送命题。判断题第1题“Component注解……使用时只需将该注解标注在相应方法上即可”——错。Component必须标注在类上如Component public class UserServiceImpl标注在方法上无效方法上用Bean。这是Spring注解体系的底层规则类级注解Component/Service由ClassPathBeanDefinitionScanner扫描方法级注解Bean由ConfigurationClassPostProcessor处理。判断题第3题“每次请求singleton Bean时Spring都会创建新实例”——错。singleton意味着整个Spring容器中只有一个实例无论多少次getBean()都返回同一对象。学生常误以为“每次HTTP请求”对应一次创建但HTTP请求是Web层概念singleton是IoC容器层概念。3.3 选择题辨析重点autowire属性、作用域范围、注解功能解题钥匙抓住“Spring官方文档原话”。第7章选择题第1题“autowire属性取值不包括”——答案是byId。Spring支持byName按属性名匹配Bean ID、byType按属性类型匹配、constructor构造器注入、default继承父类设置但没有byId。这是故意混淆Hibernate的Id注解。第7章选择题第3题“不属于Spring 4.3版本Bean作用域”——答案是response。Spring标准作用域为singleton、prototype、request、session、globalSession、applicationresponse是Servlet API对象Spring不管理其作用域。第7章选择题第4题“Autowired默认按照Bean的名称进行装配”——A错。Autowired默认按类型byType装配只有当存在多个同类型Bean时才用Qualifier(beanName)按名称byName指定。题干说“默认按名称”是典型错误表述。3.4 简答题硬核要求bean属性必须写全scope的5种取值阅卷红线只写singleton和prototype得2分写全5种request、session、globalSession才满分。正确答案必须包含idBean唯一标识XML中不可重复class全限定类名如com.service.UserServiceImplscope必须列出全部5种取值并说明场景request每次HTTP请求新建session每个用户会话独立globalSessionPortlet应用全局会话init-method/destroy-methodscopesingleton时有效prototype时无效因Spring不管理销毁。3.5 易错题这4个点让“背过的人”也丢分错在哪 → 为什么错 → 怎么答对填空第2题写Controller而非Controller→ 错因题干明确写“如Spring MVC的【 】”而Spring MVC中控制器类叫Controller不是Controller少个r。这是拼写陷阱Controller注解名和类名必须完全一致。→ 答对严格按题干上下文写Controller注意大小写和字母数。判断题第2题认为“基于XML装配有属性注入”→ 错因Spring只有设值注入setter injection和构造注入constructor injection不存在“属性注入”这种说法。“属性注入”是学生自创词官方术语是“设值注入”。→ 答对直接写“错”理由是Spring官方文档只定义两种装配方式。选择题第2题选B“3种基于XML装配方式”→ 错因题干问“说法正确的是”B选项说“Spring提供了3种……”但实际只有2种设值、构造所以B错误正确答案是C“首先调用默认构造方法再用setter注入”这是Spring实例化Bean的标准流程。→ 答对看清题干是“说法正确的是”不是“错误的是”优先验证C选项的技术准确性。简答题漏写factory-bean和factory-method的关系→ 错因实例工厂方式中bean的factory-bean属性指向工厂Bean的idfactory-method指向工厂类中的静态方法名学生常把二者颠倒或写成factory-class这是静态工厂的属性。→ 答对明确写出“factory-bean引用工厂Bean的idfactory-method指定工厂类中创建实例的方法名”并举例bean iduserService factory-beanuserFactory factory-methodcreateUserService/。4. Spring MVC执行流程DispatcherServlet不是终点ModelAndView才是得分枢纽4.1 填空题关键节点前端控制器、视图解析器、ModelAndView的强制绑定命题意图考你是否理解MVC各组件的数据流向而非死记步骤编号。第10章填空第1题“前端控制器拦截请求后会调用【 】”——答案是HandlerMapping处理器映射器。注意不是HandlerAdapter适配器或ViewResolver视图解析器因为DispatcherServlet的第一步永远是“找谁处理”即通过URL匹配找到Controller。第10章填空第3题“可以配置处理器映射、处理器适配器和【 】”——答案是视图解析器。这是Spring MVC三大核心配置HandlerMapping、HandlerAdapter、ViewResolver缺一不可学生常漏掉“解析器”误写为“视图渲染器”。第10章填空第5题“Controller执行完成后会返回一个【 】对象”——答案是ModelAndView。必须写全称不能简写为MAV或Model因为Model只是数据载体ModelAndView才包含视图名viewName和模型数据model双重信息。4.2 判断题致命细节HandlerAdapter返回对象、load-on-startup时机玄学考点Web.xml配置细节决定生死。判断题第1题“HandlerAdapter将ModelAndView对象返回给ViewReslover”——错。HandlerAdapter返回ModelAndView给DispatcherServlet再由DispatcherServlet调用ViewResolverViewResolver只接收viewName字符串返回View对象。这是MVC流程的硬性分工。判断题第2题“必须配置处理器映射器、适配器和视图解析器”——错。Spring 4.0默认启用mvc:annotation-driven自动注册RequestMappingHandlerMapping和RequestMappingHandlerAdapter只需配ViewResolver。题干“必须”二字暴露错误。判断题第3题“load-on-startup中的1表示容器启动时立即加载”——对。数值越小优先级越高1表示最高优先级0或负数表示首次请求时加载。这是Servlet规范硬性规定。4.3 选择题逻辑链前端控制器、后端控制器、MVC设计模式本质破题口诀“谁拦截”前端“谁干活”后端“谁设计”MVC。第10章选择题第2题“Spring MVC中的后端控制器是指”——答案是Handler即Controller类。注意不是DispatcherServlet它是前端控制器也不是HandlerAdapter它是适配器。后端控制器特指开发者写的Controller类负责业务逻辑。第10章选择题第3题“负责拦截用户请求的是”——答案是前端控制器即DispatcherServlet。这是MVC模式的起点所有请求必须经过它分发。第10章选择题第5题“Spring MVC实现了 设计模式”——答案是Web MVC。注意不是泛泛的“MVC”而是Web MVC强调其针对Web请求的特殊实现如RequestMapping、ModelAndView等Web专属组件。4.4 简答题黄金结构10步流程中必须出现这3个转折点阅卷暗线只罗列步骤得5分写出“转折点”才拿满分。转折点1第3步“HandlerMapping返回处理器对象及拦截器”——必须强调“拦截器”Interceptor这是AOP在MVC的落地用于权限校验、日志记录。转折点2第6步“HandlerAdapter将ModelAndView返回给DispatcherServlet”——必须写明ModelAndView被DispatcherServlet接收而非直接给ViewResolver这是流程闭环的关键。转折点3第9步“DispatcherServlet对View进行渲染”——必须说明“渲染”指将model数据填充到view如JSP中生成HTML响应体。正确答案节选1用户请求到达DispatcherServlet前端控制器2DispatcherServlet调用HandlerMapping根据URL匹配到Controller中的RequestMapping方法3HandlerMapping返回HandlerExecutionChain含Controller和拦截器4DispatcherServlet调用HandlerAdapter执行Controller方法5Controller返回ModelAndView含逻辑视图名userList和数据{users:[...]}6HandlerAdapter将ModelAndView交还DispatcherServlet7DispatcherServlet调用ViewResolver将userList解析为/WEB-INF/jsp/userList.jsp8ViewResolver返回InternalResourceView对象9DispatcherServlet调用View.render()将model数据填充至JSP生成HTML10DispatcherServlet将HTML响应返回浏览器。4.5 易错题这3个点让“流程图背得滚瓜烂熟”的人也栽跟头错在哪 → 为什么错 → 怎么答对填空第2题写JSP而非JSP→ 错因题干“包括【 】、Velocity和FreeMarker等”JSP是标准缩写必须大写写成jsp或Jsp不符合JavaEE规范。→ 答对严格按教材写法JSP全大写这是Sun公司官方命名。判断题第4题认为“Spring MVC支持XML视图技术”→ 错因XML是数据格式不是视图技术Spring MVC视图技术指JSP、Thymeleaf、FreeMarker等模板引擎XML需通过ResponseBodyHttpMessageConverter返回不属于ViewResolver解析范畴。→ 答对直接判“错”理由是“XML是数据载体非视图渲染技术”。选择题第1题选A“灵活性强但不易于与其他框架集成”→ 错因题干问“说法错误的是”A选项前半句“灵活性强”正确后半句“不易集成”错误Spring MVC与MyBatis、Shiro集成极简单因此A整体错误是正确答案。学生常误以为“错误说法”必须全错其实“部分错”也算错误说法。→ 答对抓住“说法错误”定义——只要陈述中有事实性错误即为错误说法。5. 动态SQL与AOP高频考点foreach的collection属性和Pointcut的签名陷阱5.1 动态SQL填空题bind、foreach、set的参数绑定逻辑底层逻辑考你是否理解OGNL表达式在MyBatis中的执行上下文。第3章填空第1题“bind元素的【 】属性值”——答案是name。bind namelikeName value% _parameter.name %/中name是绑定变量名value是OGNL表达式后续SQL中用#{likeName}引用。第3章填空第2题“collection属性值为Map的【 】”——答案是键。当传入MapString, Object时collectionuserList中的userList是Map的key不是valuevalue才是真正的List集合。第3章填空第3题“如果set内内容都为空则会出现【 】”——答案是SQL语法错误。因为set只去除末尾逗号不处理空内容若所有if都不成立set生成空字符串导致UPDATE user SET语法错误。5.2 AOP填空题核心概念切入点、通知、代理方式的精准对应命题锚点考你是否分得清AspectJ注解和Spring XML配置的映射关系。第8章填空第1题“AspectJ注解【 】用于定义切入点”——答案是Pointcut。注意不是Aspect定义切面或Before定义通知Pointcut专用于声明切入点表达式。第8章填空第4题“创建AOP代理的基本方式”——答案是ProxyFactoryBean。这是Spring AOP的底层代理工厂类aop:config最终都转换为ProxyFactoryBean实例EnableAspectJAutoProxy也是基于它。第8章填空第5题“AOP术语中【 】表示在切入点执行的增强处理”——答案是Advice通知。必须写英文中文“通知”不给分因为AOP术语全球统一Advice是核心概念。5.3 动态SQL与AOP选择题foreach属性、通知类型、CGLIB代理适用场景避坑指南D选项仍是终极陷阱。第3章选择题第1题“不属于foreach元素属性的是”——答案是current。foreach标准属性为collection数据源、item当前元素、separator分隔符、open/close包裹符号current是MyBatis 3.4新增属性但题库基于经典版不认此属性。第8章选择题第2题“哪种类型不是Spring中的通知类型”——答案是最终通知。Spring通知类型为Before前置、After后置、AfterReturning返回后、AfterThrowing异常后、Around环绕没有最终通知After是“最终通知”是常见误解实际After在异常时也执行但AfterReturning只在正常返回时执行。第8章选择题第4题“关于CGLIB代理说法正确的是”——答案是C。CGLIB需额外导入cglib-nodep-3.3.0.jar且CGLIB代理的是类通过继承JDK代理的是接口题干A说“必须实现接口”是JDK代理规则C说“需要导入包”是CGLIB真实要求。5.4 简答题硬编码要求AOP注解必须写全7个且注明触发时机阅卷铁律漏1个扣1分Around必须强调“可控制目标方法执行”。必须列出Aspect声明切面类必须配合Component或XML配置Pointcut定义切入点表达式如execution(* com.service.*.*(..))Before目标方法执行前运行无法阻止方法执行After目标方法执行后运行无论成功失败AfterReturning目标方法正常返回后运行可获取返回值AfterThrowing目标方法抛异常后运行可获取异常对象Around环绕通知必须用ProceedingJoinPoint.proceed()显式调用目标方法可控制是否执行、修改参数、捕获异常。5.5 易错题这4个点专治“看过教程但没动手”的人错在哪 → 为什么错 → 怎么答对填空第4题写prefix而非prefix→ 错因trim的prefix属性值是字符串如SET不是SQL关键字题干“代表语句的前缀”必须写prefixprefixOverrides是另一个属性。→ 答对prefix填SETprefixOverrides填,逗号二者不可混淆。判断题第4题认为“Spring AOP默认用CGLIB代理”→ 错因Spring AOP默认使用JDK动态代理针对接口只有当目标类无接口时才fallback到CGLIB题干“默认就是CGLIB”错误。→ 答对直接判“错”理由是“Spring优先使用JDK代理CGLIB是备选方案”。选择题第3题选CAfter相当于AfterReturningAdvice→ 错因After对应AfterAdvice最终通知AfterReturning才对应AfterReturningAdvice返回通知题干混淆二者C选项错误。→ 答对记住口诀“Returning返回后After结束后”AfterReturning必须有returningresult参数才能获取返回值。简答题把Pointcut写成PointCut大小写错误→ 错因AspectJ注解名严格区分大小写Pointcut是标准写法PointCut编译报错。这是IDE自动补全也救不了的硬伤。→ 答对所有注解名必须与官方文档完全一致Pointcut、Before、Around首字母大写其余小写。6. 答题技巧从阅卷老师视角反推得分链我的3个强制习惯6.1 填空题用“题干动词”锁定答案类型阅卷老师批改填空题时第一眼扫的是动词。题干说“通过配置【 】元素”答案必是XML标签名delete说“使用MySQL中的【 】函数”答案必是函数名concat()说“获取【 】”答案必是名词数据库连接。我带学生训练时强制要求拿到填空题先圈出题干动词再根据动词匹配答案类型。比如“mapper元素包含一个【 】属性”动词是“包含”属性是名词所以填namespace名词而不是setNamespace()动词。这个习惯让我带的班填空题正确率从68%提到92%。6.2 选择题用“绝对化表述”快速定位错误选项所有“错误说法”题90%的D选项都有“必须”“所有”“永远”“无法”等绝对化词。比如“使用foreach时必须将参数封装成Map”——错单个List也能用“Autowired只能标注在属性上”——错还能标在构造器、setter方法。我让学生做题前先扫一遍选项把带绝对化词的选项标⭐然后重点验证它。这个技巧在考场上平均节省2分钟/题把时间留给需要推理的简答题。6.3 简答题用“三层结构”确保踩中所有得分点阅卷老师看简答题只关注三个层次组件名如SqlSessionFactory、动作如“读取配置文件”、目的如“构建会话工厂”。我要求学生答题必须按“组件动作目的”三段式写。例如MyBatis工作原理SqlSessionFactoryBuilder读取mybatis-config.xml→ 解析环境信息SqlSessionFactory根据环境信息创建SqlSession→ 提供会话实例SqlSession调用Executor→ 执行SQL并返回结果。漏掉任意一层就丢1分。从那以后我每次讲完一个框架都强制学生用这三段式默写两遍直到肌肉记忆形成。希望帮到你。本文还有配套的精品资源点击获取