0x00:前言参考
之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作用和使用场景,这篇文章细说一下配置文件中 typeHandlers 标签的详细使用。
0x01:标签介绍
在 MyBatis 的 sql 映射配置文件中,为 sql 配置的输入参数最终要从 java 类型转换成数据库能识别的类型,而从 sql 的查询结果集中获取的数据,也要从数据库的数据类型转换为对应的 Java 类型。
在 MyBatis 中,使用类型处理器(TypeHandler)将数据库获取的值以合适的方式转换为 Java 类型,或者将 Java 类型的参数转换为数据库对应的类型。
在 MyBatis 中有许多自带的类型处理器,但有时候也会满足不了开发的需求,这时候就需要配置自己的类型处理器了,而 typeHandlers 标签就是用来声明自己的类型处理器的。
0x02:编写说明
使用 typeHandlers 标签配置一个自己的类型处理器,一般需要三个步骤:编写类型处理器类,在 MyBatis 全局配置文件中配置该类型处理器,在 sql 映射配置文件中使用。
例如要编写一个将 JDBC 的 timestamp 类型与 Date 类型相互转换的类型处理器配置示例。首先编写类型处理器,一般要实现 org.apache.ibatis.type.TypeHandler 接口,接口的泛型指定要转换的 Java 参数类型,若不指定则默认为 Object 类,实现 TypeHandler 接口主要改写四个方法,如下:
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
public String getResult(ResultSet rs,String columnName)
public String getResult(ResultSet rs,int columnIndex)