一直在用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支持的提交
网友评论