全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📝 1 篇文章 13 道配套习题

TypeHandler 自定义类型处理器专题

专题说明

本专题精选13道代表性题目,系统讲解MyBatis的TypeHandler机制,涵盖TypeHandler接口定义、BaseTypeHandler抽象类、内置TypeHandler、枚举类型处理、JSON类型处理、自定义TypeHandler开发与注册等核心内容,是MyBatis进阶学习的重点内容。

学习目标

  1. 掌握TypeHandler接口的4个核心方法及其作用
  2. 理解BaseTypeHandler的简化开发方式
  3. 熟悉MyBatis内置TypeHandler的使用场景
  4. 掌握枚举类型的两种处理方式
  5. 能够自定义TypeHandler处理JSON等复杂类型
  6. 掌握TypeHandler的三种注册方式

学习内容

本专题涵盖以下2个知识点:

知识点题目数核心内容
TypeHandler 基础7题TypeHandler接口、BaseTypeHandler、内置处理器、JDBC类型映射
自定义 TypeHandler6题自定义开发、枚举处理、JSON处理、注册配置、优先级规则

学习建议

  • 先阅读完整指南文章,建立整体认知
  • 理解TypeHandler在SQL执行流程中的位置(参数设置与结果映射)
  • 重点掌握自定义TypeHandler的开发步骤和注册方式
  • 注意枚举处理的两种方式差异
  • 多动手实践,尝试编写处理JSON、日期等类型的TypeHandler

📝 发现内容有误?点击此处直接编辑

📝 配套习题(13 题)

1
单选题

在 MyBatis 中,TypeHandler 接口定义了几个核心方法用于 Java 类型与 JDBC 类型之间的转换?

A

2个

B

3个

C

4个

D

5个

2
多选题

关于 MyBatis 的 TypeHandler 接口,以下说法正确的有?

A

自定义 TypeHandler 必须实现 org.apache.ibatis.type.TypeHandler 接口

B

BaseTypeHandler 是 TypeHandler 接口的抽象实现,简化了开发

C

注册 TypeHandler 只能通过 mybatis-config.xml 配置文件

D

TypeHandler 可以处理 Java 对象与数据库 JSON 字段之间的转换

3
判断题

继承 BaseTypeHandler 实现自定义 TypeHandler 时,必须手动处理 parameter 为 null 的情况。

A

B

4
填空题

在 MyBatis 中,自定义 TypeHandler 注册到框架的两种方式:

  1. 在 mybatis-config.xml 中使用 !!1!! 标签注册
  2. 使用 !!2!! 和 @MappedJdbcTypes 注解标注在 TypeHandler 类上
5
单选题

MyBatis 默认情况下,使用哪种策略处理枚举类型的映射?

A

使用枚举的 ordinal 值(索引)

B

使用枚举的 name 值(名称)

C

使用 EnumOrdinalTypeHandler

D

使用 EnumTypeHandler

6
多选题

关于 MyBatis 枚举类型处理,以下说法正确的有?

A

EnumTypeHandler 使用枚举的 name 属性进行映射

B

EnumOrdinalTypeHandler 使用枚举的 ordinal 属性进行映射

C

默认情况下,枚举类型在数据库中存储为整数

D

可以通过自定义 TypeHandler 实现枚举与数据库 code 值的映射

7
填空题

MyBatis 内置的两种枚举 TypeHandler 分别是:

  1. !!1!! - 按枚举名称映射
  2. !!2!! - 按枚举索引映射
8
单选题

在 MyBatis 中处理 JSON 类型字段时,通常需要结合以下哪个库来实现对象序列化?

A

Spring Data JPA

B

Jackson 或 Gson

C

HikariCP

D

PageHelper

9
多选题

实现一个处理 JSON 类型字段的 TypeHandler 时,需要完成哪些操作?

A

在 setParameter 方法中将 Java 对象序列化为 JSON 字符串

B

在 getResult 方法中将 JSON 字符串反序列化为 Java 对象

C

必须使用 @MappedJdbcTypes 注解指定 JDBC 类型为 OTHER

D

需要处理 null 值情况,避免反序列化异常

10
简答题

请编写一个使用 Jackson 处理 JSON 类型字段的 TypeHandler 实现(伪代码即可),并说明 key 设计要点。

11
单选题

在 MyBatis Mapper XML 中,如何为特定字段指定使用 EnumOrdinalTypeHandler?

A

在 标签中添加 typeHandler 属性

B

在 标签中添加 handler 属性

C

在全局配置文件中修改默认枚举处理器

D

无法在 XML 中指定,只能通过注解

12
多选题

关于枚举字段映射的配置方式,以下正确的有?

A

可以在 resultMap 的 标签中通过 typeHandler 属性指定

B

可以在 Java Bean 属性上使用 @TableField(typeHandler=...) 注解

C

可以在 mybatis-config.xml 中全局注册 EnumOrdinalTypeHandler

D

枚举类型无法使用自定义 TypeHandler

13
判断题

如果在 resultMap 中为某字段指定了 TypeHandler,则该配置优先于 mybatis-config.xml 中的全局注册。

A

B

← 上一个专题 SQL 映射文件基础专题
下一个专题 → 与 Spring 集成专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库