全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 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

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

A

B

2

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

A

B

单选题
3

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

A

在 标签中添加 typeHandler 属性

B

在 标签中添加 handler 属性

C

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

D

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

4

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

A

使用枚举的 ordinal 值(索引)

B

使用枚举的 name 值(名称)

C

使用 EnumOrdinalTypeHandler

D

使用 EnumTypeHandler

5

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

A

2个

B

3个

C

4个

D

5个

6

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

A

Spring Data JPA

B

Jackson 或 Gson

C

HikariCP

D

PageHelper

多选题
7

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

A

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

B

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

C

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

D

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

8

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

A

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

B

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

C

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

D

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

9

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

A

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

B

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

C

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

D

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

10

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

A

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

B

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

C

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

D

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

填空题
11

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

  1. ____________ - 按枚举名称映射
  2. ____________ - 按枚举索引映射
12

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

  1. 在 mybatis-config.xml 中使用 ____________ 标签注册
  2. 使用 ____________ 和 @MappedJdbcTypes 注解标注在 TypeHandler 类上
简答题
13

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

参考答案
1.错误 2.正确 3.A 4.D 5.C 6.B 7.A;B;D 8.A;B;D 9.A;B;D 10.A;C 11.EnumTypeHandler;EnumOrdinalTypeHandler 12.<typeHandlers>;@MappedTypes 13.
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 SQL 映射文件基础专题
下一个专题 → 与 Spring 集成专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码