Mybatis Plus 自定义 TypeHandler
  zKfdye51x3nh 2023年12月08日 22 0

在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 来将日期转换为字符串。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月08日 0

暂无评论

推荐阅读
zKfdye51x3nh