前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >秋招面试题系列- - -Java 工程师(六)

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

原创
作者头像
叶秋学长
发布2022-08-20 13:08:18
1090
发布2022-08-20 13:08:18
举报
文章被收录于专栏:全栈学习专栏

前言:七月末八月初的时候,秋招正式打响,公司会放出大量的全职和实习岗位。为了帮助秋招的小伙伴们,学长这里整理了一系列的秋招面试题给大家,所以小伙伴们不用太过焦虑,相信你们一定能超常发挥,收到心仪公司的Offer~~ 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈

​编辑

目录

MyBatis面试题

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

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

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

第三种:使用 mapper扫描器:

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


MyBatis面试题

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

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

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

代码语言:javascript
复制
resource="mapper.xml文件的地址"/>

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

1、定义 mapper接口

3、实现类集成 SqlSessionDaoSupport

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

4、spring配置

代码语言:javascript
复制
id=" "class="mapper接口的实现">

name="sqlSessionFactory"

ref="sqlSessionFactory">

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

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

代码语言:javascript
复制
resource="mapper.xml文件的地址"/>

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

2、定义 mapper接口:

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

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

3、Spring中定义

代码语言:javascript
复制
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扫描器:

代码语言:javascript
复制
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()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MyBatis面试题
  • 26、Mapper编写有哪几种方式?
    • 第一种:接口实现类继承 SqlSessionDaoSupport:使用此种方法需要编写mapper接口,mapper接口实现类、mapper.xml文件。
      • 第二种:使用org.mybatis.spring.mapper.MapperFactoryBean:
        • 第三种:使用 mapper扫描器:
        • 27、简述 Mybatis的插件运行原理,以及如何编写一个插件。
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档