java包dbutils配置自定义转换器

2019-07-11  本文已影响0人  fzhyzamt

一直在用Apache的commons-dbutils包来做数据库封装, 最近升级到java8之后发现默认不支持LocalDate类型.
查了一下发现, dbutils在1.7版本中支持了ServiceLoader, 这样使用者就可以配置自己的处理器了.
首先创建一个处理器实现org.apache.commons.dbutils.ColumnHandler接口, 然后将这个类注册到ServiceLoader即可.

// LocalDateColumnHandler.java
package com.fzhyzamt.sql;

import org.apache.commons.dbutils.ColumnHandler;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;

public class LocalDateColumnHandler implements ColumnHandler {
    @Override
    public boolean match(Class<?> propType) {
        return LocalDate.class.equals(propType);
    }

    @Override
    public Object apply(ResultSet rs, int columnIndex) throws SQLException {
        return rs.getDate(columnIndex).toLocalDate();
    }
}
# resources/META-INF/services/org.apache.commons.dbutils.ColumnHandler
# 此处填写自定义转换器的类完整路径
com.fzhyzamt.sql.LocalDateColumnHandler

Apache commons-dbutils v1.7 Release note
添加ServiceLoader支持的提交

上一篇 下一篇

猜你喜欢

热点阅读