:point_right:**例子描述:**我们希望将数据库查询的时间格式化为几秒前,几分钟前,几个小时前,几天前,几个月前,几年前等等格式
:pray:开始例子
1. 创建自定义的TypeHandler 这里我们用子类StringTypeHandler:tw-1f4af:
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.StringTypeHandler;
public class CustomTimeStampHandler extends StringTypeHandler {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
throws SQLException {
ps.setString(i, parameter);
}
@Override
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
try {
String currentColumnValue = rs.getString(columnName);
if (!StringUtils.isEmpty(currentColumnValue)) {
//此处做数据格式的转换
String result = formatResult(currentColumnValue);
return result;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private String formatResult(String currentColumnValue) {
// TODO 返回数据格式化处理逻辑
return null;
}
}
2. 注册TypeHandler(StringTypeHandler):tw-1f4e2:
在mybatis-config.xml中注册自定义的TypeHandler
<typeHandlers>
<typeHandler handler="com.xxx.CustomTimeStampHandler" javaType="String"/>
</typeHandlers>
3. mybatis查询sql中的利用:tw-1f4aa:
<result property="yourproperty" column="yourcolumn" typeHandler="com.xxx.CustomTimeStampHandler"/>