TypeHandler

配置注册

mybatis.type-handlers-package=com.itec.core.handler

 

 

使用

@MappedJdbcTypes({JdbcType.CLOB})
@MappedTypes({String.class})
public class TextHandler implements TypeHandler<String> {

    private int max = 300;

    @Override
    public void setParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
        preparedStatement.setString(i,s);
    }

    @Override
    public String getResult(ResultSet rs, String columnName) throws SQLException {
        String text = rs.getString(columnName);
        if (StringUtils.isNotEmpty(text)) {
            return text.substring(0, text.length() > max ? max : text.length());
        } else {
            return "";
        }
    }

    @Override
    public String getResult(ResultSet rs, int columnIndex) throws SQLException {
        String text = rs.getString(columnIndex);
        if (StringUtils.isNotEmpty(text)) {
            return text.substring(0, text.length() > max ? max : text.length());
        } else {
            return "";
        }
    }

    @Override
    public String getResult(CallableStatement cs, int columnIndex) throws SQLException {
        String text = cs.getString(columnIndex);
        if (StringUtils.isNotEmpty(text)) {
            return text.substring(0, text.length() > max ? max : text.length());
        } else {
            return "";
        }
    }
}

<result property="summary" column="summary" typeHandler="com.patsnap.inno.doc.core.handler.TextHandler" jdbcType="CLOB"/>
 

 

注意 如果是集成BaseTypeHandler,那么将会在所有符合条件的字段上起作用。

所以,除非特么全局通用的TypeHandler,否则不要使用BaseTypeHandler.

要注意 MyBatis 不会窥探数据库元信息来决定使用哪种类型,所以你必须在参数和结果映射中指明那是 VARCHAR 类型的字段, 以使其能够绑定到正确的类型处理器上。 这是因为:MyBatis 直到语句被执行才清楚数据类型。

 

链接

Mybatis3.3.x技术内幕(十二):Mybatis之TypeHandler

官方文档

 

转载于:https://www.cnblogs.com/tonyq/p/7890376.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值