MyBatis TypeHandler

1) 介绍

当数据库的字段类型和JavaBean的数据类型不一致时,需要通过MyBatis的TypeHandler来映射

2) 实现方式

interface TypeHandler 是一个接口,也可以继承自其实现类

MyBatis TypeHandler_第1张图片


需要实现(实现的TypeHandler接口)两个方法:
     void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException;
         该方法用于设置填充占位符时的规则

     T getResult(ResultSet rs, String columnName) throws SQLException;
         该方法用于设置封装JavaBean的属性的规则


或重写(继承了实现自TypeHandler的实现类)两个方法:
     public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
throws SQLException {}
         该方法用于设置填充占位符时的规则

     public Object getNullableResult(ResultSet rs, String columnName)
throws SQLException {}
         该方法用于设置封装JavaBean的属性的规则



同时需要在MyBatis的配置文件中,注册TypeHandler


    

3) 示例

映射规则:字段值为1,则JavaBean的属性为true;字段值为0,则JavaBean的属性为false
【TypeHandler】

public class MyTypeHandler extends BooleanTypeHandler {

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType)
            throws SQLException {
        if (null != parameter) {
            int x = (true == parameter) ? 1 : 0;
            ps.setInt(i, x);
        }
    }

    @Override
    public Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return 1 == rs.getInt(columnName);
    }

}

【MyBatis的注册配置】

    
        
    

你可能感兴趣的:(MyBatis)