秋招面试题系列- - -Java 工程师(六)

简介: 秋招面试题系列- - -Java 工程师(六)

MyBatis面试题


26、Mapper编写有哪几种方式?

第一种:接口实现类继承 SqlSessionDaoSupport:使用此种方法需要编写mapper接口,mapper接口实现类、mapper.xml文件。

1、在 sqlMapConfig.xml中配置 mapper.xml的位置

resource="mapper.xml文件的地址"/>
resource="mapper.xml文件的地址"/>

1、定义 mapper接口

3、实现类集成 SqlSessionDaoSupport

mapper方法中可以 this.getSqlSession()进行数据增删改查。

4、spring配置

id=" "class="mapper接口的实现">
name="sqlSessionFactory"
ref="sqlSessionFactory">

第二种:使用org.mybatis.spring.mapper.MapperFactoryBean:

1、在 sqlMapConfig.xml中配置 mapper.xml的位置,如果 mapper.xml和mappre接口的名称相同且在同一个目录,这里可以不用配置

resource="mapper.xml文件的地址"/>
resource="mapper.xml文件的地址"/>

2、定义 mapper接口:

1、mapper.xml中的 namespace为 mapper接口的地址

2、mapper接口中的方法名和 mapper.xml中的定义的 statement的 id保持一致

3、Spring中定义

id=""class="org.mybatis.spring.mapper.MapperFactoryBean">
name="mapperInterface"value="mapper接口地址"/>
name="sqlSessionFactory"ref="sqlSessionFactory"/>

第三种:使用 mapper扫描器:

1、mapper.xml文件编写:


mapper.xml中的 namespace为 mapper接口的地址;


mapper接口中的方法名和 mapper.xml中的定义的 statement的 id保持一致;如果将 mapper.xml和 mapper接口的名称保持一致则不用在 sqlMapConfig.xml中进行配置。


2、定义 mapper接口:


注意 mapper.xml的文件名和 mapper的接口名称保持一致,且放在同一个目录3、配置 mapper扫描器:

class="org.mybatis.spring.mapper.MapperScannerConfigurer">
name="basePackage"value="mapper接口包地址
">
name="sqlSessionFactoryBeanName"
value="sqlSessionFactory"/>

4、使用扫描器后从 spring容器中获取 mapper的实现对象。


27、简述 Mybatis的插件运行原理,以及如何编写一个插件。

答:Mybatis仅可以编写针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor这 4种接口的插件,Mybatis使用 JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4种接口对象的方法时,就会进入拦截方法,具体就是 InvocationHandler的 invoke()方法,当然,只会拦截那些你指定需要拦截的方法。


编写插件:实现 Mybatis的 Interceptor接口并复写 intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。

相关文章
|
3月前
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
161 9
|
3月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
169 2
|
7月前
|
机器学习/深度学习 Java PyTorch
Java工程师如何理解张量?
刚接触AI和PyTorch,理解“张量(Tensor)”是入门关键。张量可类比为Java中的多维数组,但更强大,尤其在AI领域支持GPU加速、自动求导等特性。它不仅能高效存储数据,还能进行复杂运算,是深度学习的核心数据结构。掌握张量的维度、数据类型及GPU加速特性,对学习PyTorch至关重要。
167 3
|
10月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
10月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
10月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
1150 2
|
10月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
252 4
|
11月前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
943 2
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
723 2
|
11月前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
142 0