当前位置: 首页 > 图灵资讯 > 技术篇> Mybatis Plus 自定义 TypeHandler

Mybatis Plus 自定义 TypeHandler

来源:图灵教育
时间:2023-12-08 17:05:55

MyBatis 在Plus中,TypeHandler可以自定义,以处理特殊的类型转换。以下是如何定制一个 TypeHandler 的步骤:

我们需要创造一个实现 org.apache.ibatis.type.TypeHandler接口类。这一类需要实现以下方法:

  • setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType): 设置参数。
  • getResult(ResultSet rs, String columnName): 从结果中获取数据。
  • getResult(CallableStatement cs, int columnIndex): 从存储过程中获取数据。
具体例子

1.将 java.util.Date 转换为java.util.String 字符串的 TypeHandler

import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.TypeHandler;import java.sql.*;import java.util.*;public class DateToStringTypeHandler extends BaseTypeHandler<Date> {    @Override    public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException {        ps.setString(i, parameter.toString());    }    @Override    public Date getNullableResult(ResultSet rs, String columnName) throws SQLException {        return new Date(rs.getString(columnName));    }    @Override    public Date getNullableResult(ResultSet rs, int columnIndex) throws SQLException {        return new Date(rs.getString(columnIndex));    }    @Override    public Date getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {        return new Date(cs.getString(columnIndex));    }}

2.在 MyBatis Plus 在配置文件中注册 TypeHandler

config.getTypeHandlerRegistry().register(DateToStringTypeHandler.class);

这样,当SQL 查询返回日期类型的数据时,MyBatis Plus 使用自定义的Datetostringtypehandler 将日期转换为字符串。